gpt4 book ai didi

Safari 中的 JavaScript 错误,只是有时

转载 作者:行者123 更新时间:2023-11-30 06:09:12 24 4
gpt4 key购买 nike

我有一个网页使用 jQuery 在页面加载时隐藏 div 并稍后根据用户交互显示它们。

在我的 $(document).ready() 中,我执行了一堆代码来隐藏这些 div 并将函数绑定(bind)到来自 jQuery 的 click() 处理程序对于触发显示这些 div 的区域。它还从 HTML 中获取一些值以供稍后的脚本使用。后者是导致问题的原因。

此代码在 Firefox 和 Chrome/Chromium 中运行良好(我们仍在为 IE 开发 CSS,但据我所知 JS 运行良好)。在 Safari 中,它大约有 70% 的时间可以完美运行。然而,每加载几个页面,我的 $(document).ready() 中的一行就会给我一个错误并停止 JS 执行,同时停止页面其余部分的 HTML 绘制。

行是:

    var itemCount = document.getElementById('itemCount').innerHTML;

Safari 中的调试控制台显示“空值”。问题是,我在我的 HTML 中看到以下内容(在无法正确加载后来自页面的“查看源代码”):

    <div id="itemCount" style="display:inline">0</div>

而且它是唯一具有此 ID 的项目(很明显。)

我在想 JS 在文档实际准备好之前以某种方式运行,并且在想我会尝试测试以查看 document.getElementById('itemCount') 是否返回 null 并且如果确实如此,请稍等片刻,但我不知道这是否可行,或者是否有不那么丑陋的解决方案。

如果我遗漏了一些明显的东西,或者以其他方式变得愚蠢,请告诉我。

最佳答案

从您编写代码的方式来看,我认为页面上一定有其他错误导致了这种情况。您的第一个代码块应该是:

var itemCount = $('#itemCount').html();

...第二个:

<span id="itemCount">0</span>

设置为内联显示的

。设置为 block 级元素的
。这是有两个标签的唯一原因。它们在其他方面是相同的。使用正确的任务。

并不是说我希望这些变化中的任何一个能改变您的症状。我只是怀疑您的页面上还有其他……有问题的东西,而这才是真正导致问题的原因。疯狂猜测:将包含 ready() 处理程序的 <script> block 移动到文档 的底部。

如果您还没有使用 Safari 4,一定要这样做。打开高级首选项中的“开发”菜单,然后在加载页面之前选择“开发”>“显示 Web 检查器”。如果有错误,它会比 Safari 3 更好地向您展示原因。

关于Safari 中的 JavaScript 错误,只是有时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1279021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com