ページを読み込んだ後、JavaScriptをロードします
-
28-10-2019 - |
質問
私は多くのトピックを読んで、たくさんのことを試しましたが、私が望むものを手に入れることができません。ページの最後にJSコードを移動したばかりで、エラーがいくつかあります。
これが私のページのように見える方法です:
<html>
<head>
bla bla
</head>
<body>
bla bla
<div class="advertising">
<script type="text/javascript" defer="defer">
window.onload = adsense();
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<script language="javascript" type="text/javascript" src="fonctions.js"></script>
</body>
</html>
fonctions.jsでは、Google AdSenseコードを持っています:
function adsense(){
<!--
google_ad_client = "pub-xxxxx";
/* 120x600, date de création 11/06/11 */
google_ad_slot = "xxxxx";
google_ad_width = 120;
google_ad_height = 600;
//-->
}
アイデアは、AdSenseの同じコードを1つだけで持っていることでしたが、ファイルfonctions.jsの後にロードすることはできません。
Defer = "Defer"、window.onloadを試しました...
何か案は?ありがとう
FireBugでこのエラーが発生します:エラー:AdSenseは定義されていません
PS:jqueryの使用を避けたい(ページを大きくしないようにするため)
アップデート:
<script type="text/javascript" defer="defer">
(function() { // 'sandbox' javascript pattern to prevent clobbering
// global namespace
var executeProxy = function() {
if (typeof adsense === 'function') { // adsense is configured
adsense();
} else { // adsense is not configured;
// therefore, try again later
setTimeout(executeProxy, 50);
}
};
executeProxy();
}());
</script>
<script language="javascript" type="text/javascript" src="fonctions.js"></script>
fonctions.jsでは、次のコードを配置すると、「OK」が表示されます。
function adsense(){
alert ("ok");
}
ただし、このコードがある場合、広告は表示されません。
function adsense(){
google_ad_client = "pub-xx";
/* 120x600, date de création 16/04/11 */
google_ad_slot = "xxx";
google_ad_width = 120;
google_ad_height = 600;
}
私の推測では、それはGoogleの問題だと思います...この方法でコードをロードすることはできません...? AdSenseコードをページに配置した場合(通話の下 - あなたがする場所 アラート( 'here'); )それはよく表示されています...だから私のadsenseコードは正しい
更新:最終的にソリューションを変更しました。コードを.htmlファイルに入れて、PHPを使用して含めます。だから、それはもう私のJSファイルにはありません。とにかくあなたの助けをありがとう。
解決
window.onload
関数のコールバックが期待されます。ただし、実行しています adsense
と adsense()
, 、 と adsense
関数を返しません。したがって、 window.onload
それを捨てます。への変更:
window.onload = adsense;
アップデート
上記の答えは捨てられるべきですが、私はそれを残しているので、人々はそれを知ることができます window.onload
関数のコールバックを期待しています:)
それを念頭に置いて defer
スクリプトの要素で、ページがロードされてスクリプトを実行するまで待機するようにブラウザに指示します。しかし、あなた fonctions.js
の中に src
あなたの最後の属性 script
鬼ごっこ;したがって、繰延スクリプトは以前に実行される可能性が高い adsense
ブラウザがスクリプトを取得するためにHTTPリクエストを作成するため、定義されています。これにより、繰延スクリプトが実行され続けることができます adsense
定義されていません。元の延期されたスクリプトの代わりにこれを試してください:
<script type="text/javascript" defer="defer">
(function() { // 'sandbox' javascript pattern to prevent clobbering
// global namespace
var executeProxy = function() {
if (typeof adsense === 'function') { // adsense is configured
adsense();
} else { // adsense is not configured;
// therefore, try again later
setTimeout(executeProxy, 50);
}
};
executeProxy();
}());
</script>
アップデート
IE以外のものでは、スクリプトDeferがサポートされていないことを忘れました。したがって、ここで延期された問題は関係してはいけません。ただし、FFとChromeで次のコードをテストしましたが、機能します。
<script type="text/javascript" defer="defer">
(function() { // 'sandbox' javascript pattern to prevent clobbering
// global namespace
var executeProxy = function() {
if (typeof adsense === 'function') { // adsense is configured
adsense();
} else { // adsense is not configured;
// therefore, try again later
setTimeout(executeProxy, 50);
}
};
executeProxy();
}());
</script>
<script type="text/javascript">
function adsense() {
alert('here');
}
</script>
他のヒント
window.onload = adsense();
電話 adsense()
すぐに 返品値をに割り当てます onload
.