safari ReferenceError:无法找到变量

时间:2010-12-08 13:05:29

标签: javascript safari referenceerror

我在自己的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函数。

任何帮助都将不胜感激。

亚当

1 个答案:

答案 0 :(得分: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。