0

我正在尝试为 twitter 开发一个 chrome 扩展。我遇到了这个问题并尝试了我在网上找到的所有方法,但仍然没有解决问题。

这是详细的解释。

我使用 content_scripts 注入自己的 js 代码来操作 twitter 网页上的 div。

源代码是这样的:

清单.json

   "content_scripts": [ { 
      "js": [ "jquery.js", "code.js" ],
      "matches": [ "http://*.twitter.com/*", "https://*.twitter.com/*" ]
   } ],

代码.js

function JSCode()
{  
/* my own jquery code here */
}

$(document).ready(function() {
var node = document.createElement('script');
var toInject = "("+JSCode.toString()+")();";

node.innerText = toInject ;
document.querySelector('body').appendChild(node);
});

我调试源代码推特页面,

<script>/*my own jquery code here */</script>
</body>

始终位于正文标签的底部。

如果我只是在 chrome 地址栏中键入 twitter.com 或 twitter.com/user_name,然后点击即可,javascript 工作正常。

如果我已经在 twitter.com 网页上(第一次加载网页时 js 代码有效),我点击我自己的个人资料链接并重定向到我自己的 twitter 页面,该页面将在同一个 chrome 网页中,javascript 似乎没有被执行(虽然 js 代码仍然附加在正文底部),只有重新加载整个网页才能使 javascript 再次工作。

关于为什么会这样以及如何解决这个问题的任何建议?谢谢

4

1 回答 1

0

点击 Ctrl+Shift+j - 这将打开控制台并向您显示任何脚本错误。您应该可以轻松地从那里缩小范围。(或转到右上角工具-> JavaScript 控制台中的 chrome 3 栏菜单)

如果你使用 jQuery,你也可以这样做......

$(document).ready(function() {
    $('body').append($('<script>').html('('+JSCode.toString()+')();'));
});

...所以我们发现 JSCode 中的代码正在加载并且运行良好...但是,当新元素被添加到文档中时,CSS 并没有“神奇地”应用于它们(当然这就是它的方式应该是)。将一个新元素添加到文档的头部,并对其进行所需的更改,这对整个文档中所有新创建的元素都保持不变......我将首先展示一个很好的例子,然后是没有按预期工作的方式。 ..

$('head').append($('<style>.fullname { color: red; border: 2px dotted green; }</style>')); 

在此动态加载页面中,以下内容效果不佳...

$(".fullname").css({color:"red", border:"2px dotted green"});
于 2013-10-26T07:22:05.493 回答