0

HTMLドキュメントでonloadイベントを静的スクリプトタグに関連付けるクロスブラウザの方法はありますか?

以下は、IE 7 および IE 8 では機能しません。

<script onload="DoThat" type="text/javascript" src="..."></script>

いくつかの背景

動的スクリプト タグと if ステートメントを使用してこれを実現する方法を見つけました。たとえば、この MSDN の記事で説明されています。

私の問題は、DOM 要素をインプレースで挿入するウィジェットを作成しているため、現在のスクリプト タグを見つける必要があることです。過去に、これを行うためのいくつかの回避策を見つけましたが、それらにはすべて欠点があります。スクリプトのオンロード イベントで「this」キーワードを使用すると役立つことを願っています。

4

2 に答える 2

3

私の知る限り、コードが属するスクリプト要素を知るには、コードが必要です。次に、必要な HTML ウィジェット コンテンツをこのスクリプトのすぐ隣に挿入するか、スクリプトの親に追加します。そうであれば、別のアプローチを提案します。

ウィジェットの JavaScript ファイル内に、次のコード行を配置します。

var scripts = document.getElementsByTagName('script'),
    thisScript = scripts[scripts.length - 1];

thisScriptは、探している DOM 要素です。現在のスクリプト要素は、このコードが にあります。とても簡単。

なぜそれが機能するのか。詳細解説http://feather.elektrum.org/book/src.html . ただの要約:

src を含むスクリプトがページにロードされるとき、ページの残りの部分はまだ書き込まれていません。これは、ページに含まれるスクリプトの数に関係なく、現在実行を開始しているスクリプトが最後のスクリプトであるということです。

これは非常に単純で効果的な手法ですが、この可能性について知っている人はあまり多くありません。信頼性が高く、ブラウザと 100% 互換性があります。ところで、Google は次のコードを使用して +1 ボタンをレンダリングします。

<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
  {lang: 'dk'}
</script>

では、API スクリプトがこのハッシュ パラメータを取得する方法をどのように考えればよいでしょうか? 私の例では、thisScript.innerHTML

于 2012-01-21T20:50:02.997 に答える
0

私はあなたのニーズをつかんだかどうかわかりません.
とにかく、現在のスクリプトを見つけるには、この例を試すことができます

<script src="jquery-1.7.1.min.js" varTest="valueTest" id="myID"></script>
<script>

var scripts = document.getElementsByTagName('script');      
var pattern = 'jquery-1.7.1.min.js';
var i = undefined;

for (var x=0; x<scripts.length; x++)
{
    if (scripts[x].src.match(pattern)) { i = x; break; }
}

if (typeof(i) != 'undefined')
{
    // Do any association needed here
    var current_script = scripts[i];
    // Just for test            
    console.log(current_script.attributes);
}

</script>
于 2012-01-21T21:11:48.157 に答える