2013-10-26 23 views
0

我試圖爲twitter開發Chrome擴展。我遇到了這個問題,並嘗試了所有可以在網上找到的東西,但仍然沒有解決問題。注入javascript並不總是工作

這裏是詳細的解釋。

我用戶content_scripts注入自己的js代碼來操縱twitter網頁上的div。

的源代碼是這樣的:

的manifest.json

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

code.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); 
}); 

我調試源代碼的Twitter頁面,

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

總是在身體標記的底部。

如果我在chrome地址欄中輸入twitter.com或twitter.com/user_name,點擊並運行,javascript工作正常。

如果我已經在twitter.com網頁(js代碼在第一次加載網頁時起作用),我點擊我自己的配置文件鏈接並重定向到我自己的twitter頁面,這將在同一個chrome網頁中,javascript似乎沒有被執行(雖然js代碼仍然附加在body的底部),但只有重新加載整個網頁才能使javascript再次運行。

任何意見,爲什麼這是這樣的,我該如何解決這個問題?謝謝

+0

當你點擊你的個人資料鏈接確實在地址欄更改地址?如果aeverything被dymanicaly加載(通過AJAX),那麼代碼將不會再次執行。所以,你必須找到其他方法。 (如果我們知道你的JSCode的功能,它可能會幫助我們想出一些東西。) – gkalpak

+0

謝謝@ExpertSystem。
這是我剛剛上傳的[演示代碼](http://d.pr/f/t4tV)。
如果您下載並加載它作爲解包擴展名,然後使用chrome轉到https://twitter.com,您會注意到每個Twitter帳戶的用戶名變成紅色。現在,點擊左上角的個人資料,Chrome會將您重定向到https://twitter.com/username,這一次您會注意到,tweet帳戶用戶名並未變爲紅色。但是,如果您只需右鍵單擊並重新加載頁面,則用戶名將再次變爲紅色。 –

+0

對不起,我沒有一個twitter帳號來自己檢查:/有些說法:1.好像你可以從清單中刪除''背景「。 2.你不需要在'code.js'中創建voodoo東西的全部'