【问题标题】:How to access another tab in Chrome in javascript?如何在 javascript 中访问 Chrome 中的另一个选项卡?
【发布时间】:2017-08-04 21:56:24
【问题描述】:

基本上,当我在 Chrome 控制台中运行此脚本时,我想获取当前 url,打开一个新选项卡,并将其设置为文本框的值。

javascript:(function(){
    var url=location.href;
    var newtab=window.open('http://www.theyoump3.com/');
    newtab.document.getElementsByName('url')[0].value=url;
})();

当我运行命令时,控制台出现异常:

Uncaught DOMException: Blocked a frame with origin “https://www.youtube.com”访问跨域框架。

理解,CORS 问题。有解决方法吗?该站点不支持传递 url 参数。

通过 iframe 尝试时会出现同样的问题

var f=document.createElement('iframe');
f.src='https://www.youtube.com/watch?v=4J2zo7ArHnw';
f.style="position:absolute;width:400px;height:400px;z-index:99999;border:2px solid black";
document.body.appendChild(f);

当然可以,然后 src 指向同一个原点

【问题讨论】:

  • 问题是跨域的,正如它所解释的stackoverflow.com/a/23927967/2894798,它阻止了从一个域到另一个域的请求。
  • 是的,它的 CORS,我想知道是否有任何解决方法?
  • 您是否正在尝试编写扩展程序? (你应该吗?)
  • 一个书签,但如果编写扩展程序可行,那么我可以做一个扩展程序,但我不确定解决 CORS 问题的区别是什么

标签: javascript google-chrome


【解决方案1】:

如果您的起点与http://www.theyoump3.com/ 的来源不同,您将无法执行此操作,因为您在控制台中运行的 JavaScript 代码在控制台附加到的页面的上下文和来源中运行.

如果您正在从该来源的页面执行此操作,则只需等待load 事件:

javascript:(function(){
    var url=location.href;
    var newtab=window.open('http://www.theyoump3.com/');
    newtab.addEventListener("load", function() {
        newtab.document.getElementsByName('url')[0].value=url;
    });
})();

但再说一遍:只有当你从那个起源开始时,我猜你不是。

【讨论】:

  • @monstro:不。但也许有两个小书签:一个用于获取剪贴板的 URL 并打开新选项卡,另一个用于在新选项卡上运行以填写剪贴板的输入。
【解决方案2】:

使用 Window.postMessage

https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

我相信它会有所帮助

【讨论】:

    猜你喜欢
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 2013-02-15
    • 2021-12-25
    • 1970-01-01
    • 2019-01-08
    相关资源
    最近更新 更多