【问题标题】:Page load in IE, page includes flash bannerIE 中的页面加载,页面包含 Flash 横幅
【发布时间】:2011-08-01 10:14:58
【问题描述】:

这就是问题所在。

我有一个由两个 swf 组成的 flash 横幅,它们通过 LocalConnection 相互通信并调用外部 JS 函数。 (我还没有弄清楚这是重要的还是只是一种重复。)

我还有一个外部的JS文件,通过flashVars告诉banner做什么。并具有banner调用事件的功能。

您可以想象,除了 IE,这在任何地方都可以正常工作。

在 IE 中我遇到了这个问题:我尝试加载一个测试页面,该页面有很多图片和沉重的背景(所以加载需要一段时间)。我放置了横幅,在所有内容之前添加了 javascript。像这样的:

http://pastebin.com/nnTuPPhN

而且有时通常在重新加载某些图片时根本不会出现。但所有文本都会出现。

我确实尝试过挖掘脚本,但由于它不是我的脚本,所以证明有点困难,最后我得出一个结论,即使我不喜欢它的某些部分,也没有明显的问题用它。

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


【解决方案1】:

只需从上面复制答案即可解决问题

flash中使用的函数即

getURL("javascript: ...","");是实际停止页面的原因 加载!嗯,与其这样,不如使用 ExternalInterface(); 我会指出我们在谈论 AS3.0 中的 AS 2.0 没有 应该使用 ExternalInterface 的问题,因为 getURL 现在是 navigateTo 或 smthg。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多