2012-06-15 96 views
2

我有一個頁面使用unofficial github buttons和我使用syntax highlighter突出顯示的代碼。如何阻止iframe阻止我的JS?

問題是,兩個github按鈕都是向api.github.com發出請求的iframe,並且它們有時可能需要一段時間才能加載。

當按鈕加載(和鉻說「等待api.github.com」),語法高亮的JavaScript無法執行。它不會執行,直到iframe完全加載,有時可能需要相當長的一段時間。

我更喜歡沒有github按鈕,並且讓我的代碼比github按鈕加載得更快。我怎樣才能做到這一點?

我試過用javascript異步加載按鈕,但是它們不能正確加載,因爲iframe中的javascript因爲某些原因而不執行。

下面是如何加載了SyntaxHighlighter的(在<head>

<script type="text/javascript" src="js/shCore.min.js"></script> 
<script type="text/javascript" src="js/brushes.min.js"></script> 
<script type="text/javascript"> 
SyntaxHighlighter.defaults['gutter'] = false; 
SyntaxHighlighter.defaults['toolbar'] = false; 
SyntaxHighlighter.all(); 
</script> 

和iframe,HTML看起來像這樣:

<iframe src="http://markdotto.github.com/github-buttons/github-btn.html?user=user&amp;repo=repo&amp;type=watch&amp;count=true&amp;size=large" allowtransparency="true" frameborder="0" scrolling="0" width="165px" height="30px"></iframe> 
<iframe src="http://markdotto.github.com/github-buttons/github-btn.html?user=user&amp;repo=repo&amp;type=fork&amp;count=true&amp;size=large" allowtransparency="true" frameborder="0" scrolling="0" width="165px" height="30px"></iframe> 

我如何阻止擋住了我的JS的按鈕?

+0

我想在這個視頻https://www.youtube.com/watch?v=b7SUFLFu3HI他們談論解決方案如何創建3rth不阻止該網站的第三方插件,並使用JavaScript和iframe。 – jcubic

+0

腳本是否出現在標記中的iframe之前? – Eric

+0

@Eric是的,腳本在頭,而iframes在頁面的主體。 –

回答

0

找到一個例子你可以在文檔使用javascript加載後分配iframe src。 通過這種方式,您的頁面可以加載查找,然後這些可以花費所有他們想要的時間。

有些人喜歡:

<script> 
function showbuttons() 
{ 
    var path1 = "http://markdotto.github.com/github-buttons/github-btn.html?user=user&amp;repo=repo&amp;type=watch&amp;count=true&amp;size=large"; 
    var path2 = "http://markdotto.github.com/github-buttons/github-btn.html?user=user&amp;repo=repo&amp;type=fork&amp;count=true&amp;size=large"; 
    document.getElementById('frame1').src = path1; 
    document.getElementById('frame2').src = path2; 
} 
</script> 

HTML:

<body onload="showbuttons()"> 
<iframe id="frame1" allowtransparency="true" frameborder="0" scrolling="0" width="165px" height="30px"></iframe> 
<iframe id="frame2" allowtransparency="true" frameborder="0" scrolling="0" width="165px" height="30px"></iframe> 
+0

我試過了,但是如果你這樣做,iframes不會正確加載,因爲按鈕的JavaScript不會執行。 –

+0

我想知道爲什麼,iframe加載獨立文檔並在完成加載時調用與主文檔相同的功能。 – nunespascal

+0

我認爲這是因爲iframe中的代碼正在創建自己的HTTP請求。 –