2016-04-09 21 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コードを置く方法を知りません。

EDIT:不気味それはまだかかわらず、それは携帯電話上で完璧に動作し、解像度のデスクトップ上に広告をロードしながら、iv'eを答えた人に

おかげで、それはプラビーン・クマールの答えは働いていただ... Siguza Iあなたのことを前に伝えて、人々は将来の参照のために知っているでしょう。そして私は...再び

EDIT IIを編集します。この時に他人つまずきは、あなたが使用することを誰に自分の写真を取ることができれば、将来の参考のために

は、Siguzaの方法もとても有効です。またPraveen Kumarの方法は、私が使用しているものです。

<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

これをテストしたところ、エラー(chrome dev tools)が見つかりました。キャッチコピーのセキュリティエラーです。原点「site」を持つフレームに外部からアクセスできないようにブロックされています。プロトコル、ドメイン、ポートは一致する必要があります –

+0

@PaulSmithしようとしています...それは私のために働いた。 CDNまたはプロキシを使用してみてください。 –

+1

それはちょうど私の最後に問題を解決しました、私はまだエラーを表示している広告が表示されますが、JavaScriptはまだ720より小さいスクリーン上に広告を作成します –

2

この行に置き換えます。この単純https://cdn.adf.ly/js/display.jsにそのsrc属性を設定し、<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"></script> 

をドキュメントの<head>タグに追加します。
プレーンHTMLの代わりにJavaScriptを使用します。

私はここでHTML5に頼っていますが、あなたの質問には<script><style>はありません(type属性は必要ありません)。

編集:

このアプローチは、使用するスクリプトで失敗するように見えるdocument.write(これは、IMO、悪い習慣です)。
あなたはdocument.writeを自分で使用することによってこの問題を回避することができます:あなたは必見が文字列で</script>タグを分割し、またはそれは構文エラーを引き起こし、周囲のスクリプトタグを閉じます

<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> 

注意を。

+0

Iv'eはこれを試して、エラー(devツールのchromeを使用) 'document'に 'write'を実行できませんでした:明示的に開かれていない限り、非同期に読み込まれた外部スクリプトからドキュメントに書き込むことはできません。 –

+0

@PaulSmith私の答えに回避策を追加しました。 – Siguza