3

独自のDIVに次のものがあります

<script>
function newfunc()
{
alert("here");
}
</script>
<button type="button" onclick="newfunc()">Press me</button>

IE と FF では正常に動作しますが、Safari (少なくとも Safari 4.0.5) では「ReferenceError は変数を見つけることができません」と表示されます - コンテンツが DIV に動的にロードされ、Safari が関数定義を認識できないようですこの DIV 内 - ただし、関数newfunc()をメインの HTML ページ (つまり、DIV ではない) に配置すると、ボタンを押すと関数が呼び出されます。

DIV に追加された Javascript 関数が Safari に認識されていないようです。

どんな助けでも大歓迎です。

アダム

4

1 に答える 1

5

ページに動的に追加される Javascript は、正しく初期化するために eval-d する必要があります。

関数定義に対してそれが正しく機能するためには、わずかに異なるフォーマットにする必要があります。例えば:

<script>
newfunc = function()
{
alert("here");
}
</script>
<button type="button" onclick="newfunc()">Press me</button>

コンテンツを DIV に追加した後、DIV からすべてのタグ要素を抽出し、それらのコンテンツを評価します。

たとえば、PrototypeJS (http://www.prototypejs.org/api/) を使用すると、次のようになります。

$(divid).innerHTML.evalScripts();

ここで、divid は、コンテンツを入力した div の ID です。

于 2012-01-05T16:49:44.753 に答える