【发布时间】:2011-08-01 10:14:58
【问题描述】:
这就是问题所在。
我有一个由两个 swf 组成的 flash 横幅,它们通过 LocalConnection 相互通信并调用外部 JS 函数。 (我还没有弄清楚这是重要的还是只是一种重复。)
我还有一个外部的JS文件,通过flashVars告诉banner做什么。并具有banner调用事件的功能。
您可以想象,除了 IE,这在任何地方都可以正常工作。
在 IE 中我遇到了这个问题:我尝试加载一个测试页面,该页面有很多图片和沉重的背景(所以加载需要一段时间)。我放置了横幅,在所有内容之前添加了 javascript。像这样的:
而且有时通常在重新加载某些图片时根本不会出现。但所有文本都会出现。
我确实尝试过挖掘脚本,但由于它不是我的脚本,所以证明有点困难,最后我得出一个结论,即使我不喜欢它的某些部分,也没有明显的问题用它。
FireBug 和 Chrome、Safari、Opera 调试器没有显示任何类型的错误。
现在作为最后的手段,我将它添加到我的 JS 文件中
window.onload = function()
{
alert('The page has loaded completely');
};
结果是,当我看到所有图片时,我看到了这条消息,当我没有看到时,我没有看到。等待图片加载没有帮助。
我也发现了这个话题: window.onload() is not firing with IE 8 in first shot
它谈到了类似的问题,所以如果有人指定什么插件会导致这种情况会很好?引用:其中一个 IE 插件在禁用其正常工作后产生了此问题。感谢您的时间和回答:)
只要不是flash插件=)))
我确实以这种方式检查页面上的 Flash 插件:
var ad_checkPlugin = function(){
// From SWFObject v2.2 <http://code.google.com/p/swfobject/>
if (typeof navigator.plugins != "undefined" && typeof navigator.plugins["Shockwave Flash"] == "object")
{
d = navigator.plugins["Shockwave Flash"].description;
return (d && !(typeof navigator.mimeTypes != "undefined" && navigator.mimeTypes["application/x-shockwave-flash"] && !navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin))
}
else if (typeof window.ActiveXObject != "undefined")
{
try
{
var d = new window.ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version");
// new window.ActiveXObject(...) will return null if ActiveX is disabled
return d?true:false;
}
catch(e)
{
return false;
}
}
}
还有另一种方式在 Ie 中导致了同样的问题,所以我想这不是插件检查的问题。
如果您告诉我可能导致此类问题的一般情况,我会很高兴,如果你们要求,我也可以添加脚本。
如果你告诉我具体的事情,我会更高兴=)),如果你要说脚本中存在问题,我将无法同意或不同意,我已经检查过并没有发现问题,浏览器也没有看到任何问题。但它必须在某个地方,因为它不起作用。
更新:我现在在我的 JS 中的每个地方都有警报,现在我看到的是:例如在 FF 中,有时我会看到警报
alert('The page has loaded completely');
但是当另一个警报弹出时,我没有任何时间单击这个(单击确定)。这是警报的正常现象吗?我应该补充一点,许多警报都在横幅调用的函数中。
更新二:
我已经进一步隔离了这个问题,我完全停止了从 flash 到 JS 函数的任何调用(首先我尝试用 alert("hello world") 替换它们;这对加载问题没有帮助)。
现在,当 flash 不调用 JS 时,页面加载正常。当然我需要 flash 来调用外部函数。
无论如何新问题:从 Flash 调用的 javascript 是否可以让 IE 认为所有内容都已加载并且可以停止,那就是它可以是这样的:
clean your room (and two seconds later)
now brush your teeth
result: the room is half clean but the teeth are
我可能会补充一点,无论页面上加载什么,总会加载一些内容:文本、未来图片的空格,但这可能只是巧合,除此之外,根本没有系统来说明有什么和没有什么已加载。
---------------> 找到答案 谢谢)))为我的问题投票,这是回答者! flash中使用的函数即
getURL("javascript: ...","");
实际上是阻止页面加载的原因!嗯,与其这样,不如使用 ExternalInterface();我要指出的是,我们在 AS3.0 中讨论的是 AS 2.0,毫无疑问应该使用 ExternalInterface,因为 getURL 现在是 navigateTo 或 smthg。
感谢编写此 AS 以了解问题所在=)
【问题讨论】:
-
我想帮忙,但我不确定问题是什么。问题变了吗?如果是这样,它是什么?你有我可以用来帮助排除故障的演示页面(工作原型)吗?
-
demo page, here =) 很抱歉这个问题很长...banners.adfox.ru/110729/adfox/155750/testpage_moda.html 这足以停止 IE 加载,问题仍然是为什么它不起作用,我只是做了一些假设看看最近两次更新
-
在 macOS 上用 Mozilla 测试不起作用 -> 有时 ExternalInterface 在 macOS 上不好
-
您可以使用 getURL("javascript: setTimeout(---你需要的 ---,时间以毫秒为单位)","") 和每次你有的 javascript 推迟 onload 事件一些繁重的代码调用该函数应该用 setTimeout(function,0) 来完成。这应该基本上允许js和flash在同一页面上同时运行而不会冻结浏览器。
-
您应该在下面的“您的答案”部分回答您自己的问题,以便将其从“未回答的问题”列表中删除。
标签: javascript flash internet-explorer