【发布时间】:2011-11-14 01:02:05
【问题描述】:
我找到了解决方案,但它不是最好的,所以我仍在寻找解决方案。请参阅我的回答了解我所做的事情。
更新 - 我的错误仍然存在,如下所述,但是如果我打开 IE 的开发者工具,错误就会消失!如果我关闭浏览器并重新打开,错误会再次出现!
更新 2 - 我尝试将以下代码插入到我的 JS 中,看看是否能解决问题,但它没有:
if (!("console" in window) || !("firebug" in console)) {
var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
window.console = {};
for (var i = 0, len = names.length; i < len; ++i) {
window.console[names[i]] = function(){};
}
}
然后是这个:
var console = {};
console.log = function(){};
我还扫描了我的 JS 文件,但从未遇到会导致错误的 console.log 函数。
这是一个令人费解的问题,我会尽力解释。我在第一次访问时会显示灯箱的页面中设置 cookie。它在 FF、Chrome 等中运行良好,但在 IE 中则不行。
在 IE 中发生的情况是调用我的灯箱(颜色箱)触发的脚本,但我看到的只是 AJAX 加载器旋转并且内容永远不会加载。我发现脚本启动得太快了。我正在使用$j(document).ready(function(),我切换到:$j(window).load(function(),一切似乎都很好,它工作正常,直到我从另一个页面开始并来到上面提到的页面。
如果我从任何其他页面开始并单击链接,我也会遇到同样的问题! cookie 工作正常,不会再次触发该框。
换句话说,如果我清除 cookie 并从有问题的页面开始,那么没有问题。 但是如果我从任何其他页面开始(清除了 cookie)并转到上述页面,颜色框将无法正确加载。
据我所知,$j(window).load(function() 工作不正常。
我没有收到来自 IE 的错误。我正在使用 IE 8 进行测试,并且无法在使用 Windows XP 时测试 9。 (我被告知它在 IE 9 中运行良好,但尚未确认)该脚本位于我文档的 <head> 中。 (如果我将脚本移动到 <body> 中,它会完全破坏页面。)
我已经阅读了DOCTYPE 不正确或缩短的问题以及 IE 中的颜色框问题。我的 DOCTYPE 如下,应该是正确的:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
非常感谢任何想法或想法!
这是我正在使用的代码:
Javascript
var $j = jQuery.noConflict();
$j(window).load(function() {
//window.onload = function() does not function properly either...
if(!$j.cookie('gallerycookie')){
$j.colorbox({
inline:true,
href:"#gallery-nav-instruct"
});
$j.cookie("gallerycookie", 1, {
expires: 30,
path: '/'
});
}
});
HTML
<div style="display:none">
<div id="gallery-nav-instruct">
<h2>Gallery Navigation Instructions - Step 1</h2><h2 style="text-align:right">
<a style="text-align:right;" class="inline cw" href="
#gallery-enlarge-instruct">Step 2</a></h2>
<p> </p>
<p class="white"><img src="/Images/Pages/gallery-navigation.jpg" width="890" height="450" alt="Gallery Navigation Instructions" /></p>
</div>
</div>
<div style="display:none">
<div id="gallery-enlarge-instruct">
<h2>Gallery Navigation Instructions - Step 2</h2>
<p> </p>
<h2><a class="inline cw" href="#gallery-nav-instruct">Step 1</a> </h2>
<p class="white"><img src="/Images/Pages/gallery-enlarge.jpg" width="890" height="510" alt="Gallery -Enlarged View Instructions" /></p>
</div>
</div>
另一个注意事项:我在页面上使用 jAlbum,我没有看到任何冲突,但可能有问题吗?我无法在此处发布该代码,因为它会超出 SO 的发布限制。
要从this page 开始触发此错误,将出现一个灯箱。点击Message Examples(灯箱左下角或没有灯箱的菜单中的第一项)。
如果需要,这里是page 的直接链接。 (直接进入页面不会触发错误。)
我尝试使用window.onload = function(),但发生了同样的问题。
一旦加载了 div,我尝试使用事件处理程序来触发脚本,这甚至根本没有触发脚本。这是代码:
var $j = jQuery.noConflict();
$j('#gallery-nav-instruct').load(function() {
if(!$j.cookie('gallerycookie')){
$j.colorbox({
inline:true,
href:"#gallery-nav-instruct"
});
$j.cookie("gallerycookie", 1, {
expires: 30,
path: '/'
});
}
});
【问题讨论】:
-
我在 IE8 中打开了该页面,它似乎工作正常。 Colorbox 在第一次访问时打开,而不是在第二次访问时打开。
-
如果您直接链接到该页面,则不会触发错误。我编辑了我的问题以反映如何触发错误。
-
你能在 jsfiddle.net 上重新创建这个例子,包括 jAlbum 代码吗?我有几个测试环境和相当多的 colorbox 经验。如果我能解决这个问题就好了。
-
@melihcelik - 我创建了一个小提琴,但专辑根本没有加载,我不知道为什么。这是小提琴的链接 - jsfiddle.net/Lynda333/DurGt/8 - 我在 IE 中看不到错误,但画廊没有加载,所以这可能是错误没有触发的原因?
-
我检查了小提琴示例并下载了所有文件并重新创建了本地示例,但无法重现错误。我正在使用安装了 IE9 的 Windows 7,我使用兼容模式运行了示例。您在原始 IE7 和 IE8 安装时遇到错误吗?我的笔记本电脑上有带 IE7 的 WinXP,我也会试试。
标签: javascript jquery internet-explorer jquery-plugins colorbox