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再次運行。
任何意見,爲什麼這是這樣的,我該如何解決這個問題?謝謝
當你點擊你的個人資料鏈接確實在地址欄更改地址?如果aeverything被dymanicaly加載(通過AJAX),那麼代碼將不會再次執行。所以,你必須找到其他方法。 (如果我們知道你的JSCode的功能,它可能會幫助我們想出一些東西。) – gkalpak
謝謝@ExpertSystem。
這是我剛剛上傳的[演示代碼](http://d.pr/f/t4tV)。
如果您下載並加載它作爲解包擴展名,然後使用chrome轉到https://twitter.com,您會注意到每個Twitter帳戶的用戶名變成紅色。現在,點擊左上角的個人資料,Chrome會將您重定向到https://twitter.com/username,這一次您會注意到,tweet帳戶用戶名並未變爲紅色。但是,如果您只需右鍵單擊並重新加載頁面,則用戶名將再次變爲紅色。 –
對不起,我沒有一個twitter帳號來自己檢查:/有些說法:1.好像你可以從清單中刪除''背景「。 2.你不需要在'code.js'中創建voodoo東西的全部'