2011-04-22 33 views
0

我創建了一個書籤,它使用jQuery來計算HTML中某些<div><script>標籤的出現次數,並使用alert()來顯示計數。它大部分時間都有效,但有時會出現兩種不同的意外行爲:1)單擊書籤時不會發生任何事情;或者2)單擊書籤將導致頁面僅使用以下文本重新加載:「[object HTMLScriptElement]」on一個空白頁。該腳本應該可以工作,無論在此頁面上是否存在搜索的特定<div><script>標籤。例如,書籤工作在stackoverflow上,即使它不包含特定的標籤。然而,它不適用於某些網站(也沒有特定標籤),例如google.com。jQuery Bookmarklet零星地爲未知原因工作

這裏是具有spcific <script>標籤的頁面,但點擊時,它的書籤不會做任何事情:www.laboutique.bouyguestelecom.fr

這裏是書籤代碼的全部:

javascript: 
if (typeof jQuery == 'undefined') { 
    var jQ = document.createElement('script'); 
    jQ.type = 'text/javascript'; 
    jQ.onload=runthis; 
    jQ.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'; 
    document.body.appendChild(jQ); 
} else { 
    runthis(); 
} 

function runthis() { 
    alert("total div tags: " + $('div[id^="inqC2C"]').length + "\ntotal script tags: " + $('script[src*="inq.com"]').length); 
} 

燦任何人提供任何見解?

+0

愛德華解決了一半的問題。他添加的test()函數解決了在運行腳本的其餘部分之前確定jQuery是否已加載的問題。然而,另一個問題仍然存在:小書籤在某些網站上仍然沒有做任何事情,比如上面列出的鏈接:www.laboutique.bouyguestelecom.fr還有其他想法嗎? – jake 2011-04-22 20:24:07

回答

1

您需要測試jQuery/$。它偶爾失敗的原因是jQuery正在被加載,但在它被評估之前,你正在觸發你特定的jQuery調用。你需要測試的jQuery這樣:

javascript: 
    function loader() { 
    var jQ = document.createElement('script'); 
    jQ.type = 'text/javascript'; 
    jQ.onload=runthis; 
    jQ.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'; 
    document.body.appendChild(jQ); 
}; 

function runthis() { 
    if (if (typeof jQuery == 'undefined') { 
     setTimeout(function() { 
      loader(); 
     }, 300); 
    } else { 
     alert("total div tags: " + $('div[id^="inqC2C"]').length + "\ntotal script tags: " + $('script[src*="inq.com"]').length); 
    } 
}; 

function test() { 
    if (typeof jQuery == 'undefined') { 
     loader(); 
    } else { 
     runthis(); 
    } 
}; 

test(); 
+0

感謝您的想法。這部分工作:添加test()函數以確定jQuery是否已加載。但是,您的修訂腳本不適用於計時器。所以test()函數解決了頁面重新加載空白頁面的問題。然而,另一個問題仍然存在:小書籤在某些網站上仍然沒有做任何事情,比如上面列出的鏈接:www.laboutique.bouyguestelecom.fr還有其他想法嗎? – jake 2011-04-22 20:22:30

+0

manji很好:P – 2011-04-23 05:02:03

2

網站類似www.laboutique.bouyguestelecom.fr您的書籤不工作已禁用$別名(通過使用jQuery.noConflict()

不要使用$符號但jQuery始終:

alert("total div tags: " + jQuery('div[id^="inqC2C"]').length 
    + "\ntotal script tags: " + jQuery('script[src*="inq.com"]').length); 
+0

你解決了它!非常感謝。 – jake 2011-04-22 20:32:20