Https连接中的Chrome上的Javascript鼠标事件isTrusted false

时间:2017-08-31 09:55:59

标签: mouseevent

我在与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是动态生成的

如何解决此问题?

0 个答案:

没有答案