我在与MouseEvent isTrusted属性相关的https连接上遇到问题。
我有像
这样的HTML<div id="facebook_share">
<a href="#">
<img src="facebook.png" alt="facebook">
</a>
</div>
现在我正在使用以下javascript打开带有facebook网址的弹出窗口
socialSharePopup = function (link, title) {
window.open(link, title, 'width=400,height=380');
};
documentUrl = document.URL;
documentMetaDesc = getMetadata("description");
facebookLink = "https://www.facebook.com/sharer/sharer.php?u=" + documentUrl;
facebookLinkEle = document.getElementById("facebook_share");
if (facebookLinkEle !== null) {
facebookLinkEle.onclick = function (event) {
//event.isTrusted is false on chrome on https
socialSharePopup(facebookLink, 'Facebook');
if (event) { //If Condition used for IE8
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
}
};
}
现在我面临的问题是,在https连接上打开此页面时,Chrome会弹出阻止程序,第一次打开弹出窗口阻止程序,第二次单击时弹出窗口打开而不进行任何更改。我发现这种行为很奇怪。
当在http连接上打开同一站点时,它工作正常,没有阻止弹出窗口。
使用不受信任的连接在https
上打开网站时(在没有证书的本地网站上)会发生相同的结果
调试后,如果在https上阻止弹出窗口,我发现MouseEvent.isTrusted (event.isTrusted)
属性为false
isTrusted和https连接之间有什么关系?为什么只在https上出现错误?为什么只有第一次?
它在Firefox和IE上工作正常
还有一个观察结果是,当div#facebook_share
上的用户点击发生时,它可以正常工作(event.isTrusted is true
),但是当<a>
标记上的点击发生时,它就是假的。
删除<a>
标记不是一个选项,因为HTML是动态生成的
如何解决此问题?