xfyanmeng 2024-08-25 15:30 采纳率: 33.3%
浏览 8

浏览器插件开发,注入js点击打开新窗口被浏览器拦截

开发浏览器插件,我需要js点击某个网站的一个按钮div,手动点击会打开一个新页面,我注入js使用click等方式点击,新窗口会被浏览器作为弹出式窗口拦截
尝试过click(),jQuery的trigger("click"),以及MouseEvent
想不通为什么,没有什么思路,有没有指点下,谢谢

    // searchBtn.click(); 

    //searchBtn.trigger("click");

    if (searchBtn) {
         const clickEvent = new MouseEvent('click', {
           bubbles: true,
          cancelable: true,
          view: window
        });
         searchBtn.dispatchEvent(clickEvent);
    }
  • 写回答

2条回答 默认 最新

  • 吃不了席 2024-08-25 15:31
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    浏览器可能会拦截弹出式窗口,因为它们可能被视为广告或恶意行为。要绕过这个限制,你可以尝试以下方法:

    1. 使用window.open()方法打开新窗口,而不是通过触发点击事件。这样可以避免被浏览器拦截。
    if (searchBtn) {
        searchBtn.addEventListener('click', function() {
            window.open('https://www.example.com');
        });
        searchBtn.click();
    }
    
    1. 如果你仍然想使用dispatchEvent,可以尝试在事件处理程序中调用window.open(),而不是直接在新窗口中打开链接。
    if (searchBtn) {
        const clickEvent = new MouseEvent('click', {
            bubbles: true,
            cancelable: true,
            view: window
        });
        searchBtn.addEventListener('click', function() {
            window.open('https://www.example.com');
        });
        searchBtn.dispatchEvent(clickEvent);
    }
    

    请注意,这些方法可能仍然无法完全避免浏览器的拦截,因为浏览器可能会根据用户的设置或其他因素来决定是否允许弹出式窗口。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月25日