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 中),那么按下按钮确实会调用该函数。

就好像 Safari 没有看到已添加到 DIV 的 Javascript 函数。

任何帮助,将不胜感激。

亚当

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