【问题标题】:Google Chrome Mobile Emulator: how to force it to open new tab in emulator also?Google Chrome Mobile Emulator:如何强制它在模拟器中打开新标签?
【发布时间】:2015-03-27 03:55:42
【问题描述】:

我调试移动网站,使用桌面模拟器比使用移动设备本身更舒服。我使用嵌入在 Google Chrome 中的模拟器。它会改变视口大小和用户代理,因此网站看起来与手机相当相似。

当任何链接包含target="_blank" 时,Chrome 会在没有任何仿真的情况下打开它,因此无法调试包含此类链接的网站。

我的问题是:有没有办法强制谷歌浏览器打开“新标签页”链接,其模拟设置与其父窗口相同?

【问题讨论】:

    标签: javascript google-chrome


    【解决方案1】:

    也许您可以创建一个 if 语句来检查您是否在移动设备上,然后遍历所有链接并将 'target="_blank"' 替换为 'target="_self"'。我认为这很好,因为您只需要在 PC 上的开发期间使用它。

    if(/android|mobile/i.test(navigator.userAgent)){
       var links = document.getElementsByTagName("a");
       for(var i = 0; i < links.length; i++){
          links[i].setAttribute("target","_self");
       }
    }
    

    【讨论】:

    • 如果您控制使用 Chrome 调试的网页是个好主意,因此您可以在该页面上注入 JavaScript。如果您无法访问 Web 服务器,可能会编写自动嵌入此 JavaScript 的 Chrome 扩展程序,因为在每个页面加载时手动嵌入 JavaScript 非常耗时。
    • @Vitaliy 您也可以将其保存为书签并单击它以添加脚本:(javascript: if(/android|mobile/i.test(navigator.userAgent)){var links = document.getElementsByTagName("a");for(var i = 0; i
    • 这样的书签是否可以与iframe 一起使用?
    • 这取决于 iframe src。如果 iframe 与站点位于相同的 url(相同来源)上,那么您可以将“document.getElementsByTagName('a')”替换为“iframe.contentWindow.getElementsByTagName('a')”,因为 iframe 是对 iframe 的引用元素。如果它不是同一个来源,那么就没有办法让它工作。
    猜你喜欢
    • 2016-07-31
    • 2022-07-06
    • 2016-12-23
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 2015-12-13
    相关资源
    最近更新 更多