我在自己的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函数。
任何帮助都将不胜感激。
亚当
答案 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。