2016-04-09 154 views
1

好吧所以這也許是不可能的,但我認爲這是,我完全是新的,所以什麼iv'e嘗試可能顯然不工作,但我當時不知道。我的網站移動版響應式,沒有單獨的網頁用於移動網站,因此將代碼單獨放入頁面也無法使用。基於屏幕大小禁用JavaScript

iv'e嘗試:

<style> 
@media screen and (max-width: 720px) { 
#div { 
display:none; 
    } 
} 
</style> 

<div id="div"> 
<script type="text/javascript"> 
    var adfly_id = ID; 
    var popunder_frequency_delay = 0; 
</script> 
<script src="https://cdn.adf.ly/js/display.js"></script> 
</div> 

,沒有工作。 Iv'e在這裏

if(screen.width < 720) { 
    // do any 720 width stuff here, or simply do nothing 
    return; 
} else { 
    // do all your cool stuff here for larger screens 
} 

但是在哪兒見過這個代碼,我不知道我怎麼會放adfly代碼到它。

編輯:

感謝那些誰回答,iv'e得到它的Praveen庫馬爾回答的工作,而古怪它仍然在桌面上加載廣告,無論該決議的它工作完美的在手機上... Siguza我我會提前給你,以便將來參考。我會重新編輯...

編輯II:

以供將來參考,Siguza的方法也適用,所以如果在這個任何人絆倒,那麼你可以把你在誰的使用PIC。此外,Praveen Kumar方法也適用於最短的廣告,因爲任何可能使用它們而非adfly的人都是我使用的。

<script type="text/javascript"> 
if(screen.width < 720) { 
    var adfly_id = null; 
    var popunder_frequency_delay = null; 
} else { 
    // do all your cool stuff here for larger screens 
    var adfly_id = ID; 
    var popunder_frequency_delay = 0; 
} 
     </script> 
<script src="https://cdn.adf.ly/js/display.js"></script> 
<script type="text/javascript"> 
if(screen.width < 720) { 
//screens bigger than 720 
} else { 
//shortest advertisement code       
} 
</script> 

回答

1

可能是黑客工作。如果,如果你有一個有效的adfly_id這隻適用,那麼這樣做:

if(screen.width < 720) { 
    var adfly_id = null; 
    var popunder_frequency_delay = null; 
} else { 
    // do all your cool stuff here for larger screens 
    var adfly_id = ID; 
    var popunder_frequency_delay = 0; 
} 

這可能會失敗,您要初始化adfly東西。

但要做到這一點,正確的方法是:

if(screen.width < 720) { 
    // Bye bye. 
} else { 
    // do all your cool stuff here for larger screens 
    require("awesome.js"); 
} 

PS:這裏的require()功能是一個僞功能將包括並激活JavaScript文件。該代碼的樣本是:

function loadScript(url, callback) { 
    // Adding the script tag to the head as suggested before 
    var head = document.getElementsByTagName('head')[0]; 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = url; 

    // Then bind the event to the callback function. 
    // There are several events for cross browser compatibility. 
    script.onreadystatechange = callback; 
    script.onload = callback; 

    // Fire the loading 
    head.appendChild(script); 
} 
+0

剛剛測試了這一點,並得到了錯誤(鉻開發工具)未捕獲的安全錯誤:阻止與外國來源訪問框架與原產地「網站」。協議,域名和端口必須匹配 –

+0

@PaulSmith您是否試圖......爲我工作。嘗試使用CDN或代理。 –

+1

它確實在我的工作只是一個問題,我仍然得到錯誤,廣告出現,但JavaScript仍然在720以上的屏幕上創建廣告 –

2

替換此行:

<script src="https://cdn.adf.ly/js/display.js"></script> 

與此:

<script> 
if(screen.width >= 720) { 
    document.head.appendChild(document.createElement('script')).src = 'https://cdn.adf.ly/js/display.js'; 
} 
</script> 

這將只需創建一個<script>標籤,其src屬性設置爲https://cdn.adf.ly/js/display.js ,並將其添加到文檔的<head>標記中。
只用JavaScript而不是純HTML。

請注意,我在這裏依賴於HTML 5,但您的問題也是如此(<script><style>不需要type屬性)。

編輯:

這種做法似乎無法在使用腳本document.write(其中,國際海事組織,是不好的做法)。
您可以解決此通過使用document.write自己:

<script> 
/* you can put your adfly_id code right here */ 
if(screen.width >= 720) { 
    document.write('<script src="https://cdn.adf.ly/js/display.js"><'+'/script>'); 
} 
</script> 

請注意,您必須字符串中分裂</script>標籤,否則將關閉周圍的腳本標籤,導致一個語法錯誤。

+0

Iv'e只是試過這個,並沒有工作,我得到錯誤(使用開發工具chrome) 無法在'文檔'上執行'寫入':除非明確打開,否則無法從異步加載的外部腳本寫入文檔。 –

+0

@PaulSmith在我的答案中添加了解決方法。 – Siguza

相關問題