客户给了我一组功能,以便在客户端检查是否安装了OpenLight。 Firefox和IE工作正常,但Chrome总是告诉我没有安装OpenLight。
然而,我真的不明白如何追踪这一点,因为我完全迷失了正在发生的事情。我用谷歌搜索了事件的名称,我在谷歌得到0结果:S例如,以下是在Firefox中检查的代码:
function isOpenLightInstalled() {
try
{
var element = document.createElement("MyOpenLightDataElement");
document.documentElement.appendChild(element);
var evt = document.createEvent("Events");
evt.initEvent("MyOpenLightEvent", true, false);
element.dispatchEvent(evt);
if (element.getAttribute("reply") == "1")
{
return true;
}
}
catch(err)
{
}
return false;
}
这是做什么的?那些活动是什么?它如何知道它正在检查OpenLight?
以下是Chrome功能:
function isOpenLightInstalled() {
try
{
var customEvent = document.createEvent('Event');
customEvent.initEvent('GCOLCustomEvent', true, true);
var element = document.getElementById("GCOpenLightDataElement");
element.dispatchEvent(customEvent);
if (element.getAttribute("reply") == "1")
{
return true;
}
}
catch(err)
{
}
return false;
}
有人可以请点亮一下:(
谢谢!
答案 0 :(得分:0)
这是做什么的?那些活动是什么?它如何知道它正在检查OpenLight?
<MyOpenLightDataElement>
元素并将其附加到文档(即网页)。MyOpenLightEvent
的事件,然后调度(运行)它。reply
的属性添加到1中的元素,使其现在看起来像<MyOpenLightDataElement reply="1">
。true
,否则返回false
。您的Chrome功能失败,因为据我所知,身份GCOpenLightDataElement
的任何内容都不会附加到DOM。您可能希望尝试使用原始函数,并按如下方式更改catch语句:
catch(err) {
alert(err);
}
我对Chrome的建议,可能有效也可能无效:
function isOpenLightInstalled() {
try
{
var element = document.createElement("GCOpenLightDataElement");
document.documentElement.appendChild(element);
var evt = document.createEvent("Event");
evt.initEvent("GCOLCustomEvent", true, true);
element.dispatchEvent(evt);
if (element.getAttribute("reply") == "1")
{
return true;
}
}
catch(err)
{
console.log(err); // just so we can see any errors with Ctrl+Shift+I
}
return false;
}