2016-08-30 69 views
1

我正在尝试使用我自己的css修改iframe中的某些div类,并更改Twitter Block | Drupal 8的样子。但是,我遇到了很多错误,例如$ is not a function等....我认为我的js加载速度太快(在我的jquery.js之前),但是,我检查了元素,一切都应该工作。 (现在没有错误)如何设计Drupal Twitter块?

HTML

<iframe id="twitter-widget-0" class="twetter-timeline" > 
    <html> 
    <head></head> 
    <body> 
     <div class="timeline-Viewport"> 
      <ol class="timeline-TweetList"> 
      <li></li> 
      </ol> 
     </div> 
    </body> 
    </html> 
</iframe> 

注:我没有对iframe这不是我自己的代码控制。

JS

(function ($, Drupal, drupalSettings) { 
    Drupal.behaviors.yourbehavior = { 
    attach: function (context, settings) { 

     $('iframe').load(function() { 
    $('#twitter-wwidget-0').contents().find("body") 
    .append($("<style type='text/css'> .timeline-Widget{color:red;} </style>")); 
}); 


    } 
    }; 
})(jQuery, Drupal, drupalSettings); 

没有错误,但它不工作...所以我不知道我做错了。

更新: 我也试过这个代码,但也没有工作。

(function($) { 

$(document).ready(function() { 
    console.log('hello'); 
    $('#twitter-widget-0').css('width', '100px'); 
    }); 
}(jQuery)); 
+0

iframe的内容是否在您的域名或Twitter的? https://en.wikipedia.org/wiki/Same-origin_policy – ceejayoz

+0

嗨@ceejayoz它是在我的域名..感谢提问 –

+0

@ceejayoz任何想法= /? –

回答

1

CORS(跨来源资源共享)访问控制防止在包含文档从修改(或者甚至不知道)的iframe的内容,如果它的内容是从比含有文档的不同结构域来源。有机制(如postMessage)绕过这个,但他们需要在iframe的内部和外部之间的合作。

在Twitter的情况下,他们有documentation关于如何调整Twitter帖子和Feed嵌入的样式。 (它看起来像Twitter将样式限制为黑暗或光线主题,宽度,对齐方式和链接颜色。)

+1

另外,OP应该强制性地改变解决或覆盖要求的方法。我建议使用twitter的[REST API](https://dev.twitter.com/rest/public)。 – SaidbakR

+0

@sємsєм我会看看上面的链接!但我真的很想知道为什么我不能在我自己的域名中击中'