我對Chrome擴展程序很感興趣。我也需要檢查一個URL是否在線。該URL向我返回一個變量,所以如果var爲true,則該URL處於聯機狀態。使用Javascript:創建腳本不起作用
如果URL處於脫機狀態,則該錯誤需要大約2秒鐘,因此擴展彈出窗口需要2秒才能啓動EVERYtime。
這是我的 「舊」 版本:
popup.html:
<script language="javascript" src="http://example.org/jdcheck.js"></script>
<script language="javascript" src="popup.js"></script>
popup.js:
if (variable) { [...] }
好了,工作 - 2秒後。
現在我有了一個想法,所以我刪除了popup.html中的scriptlink。 這是我的新popup.js:
background.$(document).ready(function() {
var jq = document.createElement('script'); jq.type = 'text/javascript';
jq.src = 'http://127.0.0.1:9666/jdcheck.js';
document.getElementsByTagName('head')[0].appendChild(jq);
if(jdownloader){
[...action]
}
});
你看,我使用jQuery加載Checkfile。現在
,它將引發我一個錯誤:
Uncaught ReferenceError: jdownloader is not defined
嗯,它看起來像的createElement沒有工作。 我100%確定URL給了我想要的變量。
你能幫我嗎?我不知道如何解決這個問題..
謝謝! 馬庫斯
編輯:我刪除了jQuery的部分,增加了keepGoing和jq.onload:
function keepGoing() {
console.log("JS should have been loaded");
if(jdownloader){
[action]
}
}
var jq = document.createElement('script');
jq.onload = keepGoing();
jq.src = 'http://127.0.0.1:9666/jdcheck.js';
document.getElementsByTagName('head')[0].appendChild(jq);
現在,控制檯使我這個:
JS should have been loaded popup.js:98
Uncaught ReferenceError: jdownloader is not defined popup.js:100
所以它看起來像jdownloader var不會傳遞給popup.js。 爲什麼?爲什麼?!我不知道。
馬庫斯
您需要等待外部腳本加載,然後才能從中訪問變量/函數。使用'jq.onload = function(){//腳本已經被加載,jdownloader應該在那裏}' – devnull69
什麼是「jdownloader」?它沒有被定義爲var(至少在你的代碼片段中)?什麼是「背景」? – mrak
@mrak:非常確定'jdownloader'是由正在加載的腳本創建的...... –