Safari ReferenceError:找不到变量
Posted
技术标签:
【中文标题】Safari ReferenceError:找不到变量【英文标题】:safari ReferenceError: Can't find variable 【发布时间】:2011-05-22 05:25:58 【问题描述】:我在自己的 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 函数。
任何帮助将不胜感激。
亚当
【问题讨论】:
如果是这样,您希望我们做什么?您唯一的选择是将 JS 代码放在主体中。告诉我们您的服务器端代码是什么语言,发布您当前的代码,我们会尽力为您提供指导。 不可能将所有功能都放入主页,因为某些功能包含动态内容,例如在加载 div 内容时检查的会话数据。 查看gymadvisory.co.uk 按下 Find Gyms 它可能会显示一个无样式的页面 - 这是因为 button 元素还没有 type="button" 属性并且因为 jquery 分配的 click 函数试图调用 javascript 函数它找不到它提交 - 添加缺少的属性将停止,但然后按下按钮什么都不做 另外——一旦显示无样式的页面,按下返回按钮并重试——它现在应该可以工作了!不知道为什么返回的页面应该可以工作 恢复到以前版本的应用程序,看起来还可以,所以一定是 javascript 更改中的错误,尽管仍然是奇怪的行为。 【参考方案1】:动态添加到页面的 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();
div 是您刚刚填充内容的 div 的 ID。
【讨论】:
以上是关于Safari ReferenceError:找不到变量的主要内容,如果未能解决你的问题,请参考以下文章
ReferenceError:找不到变量:ApplicationConfiguration