2017-08-04 76 views
1

基本上,當我在Chrome控制檯中運行此腳本時,我想獲取當前網址,打開一個新選項卡,並將其設置爲文本框的值。如何在JavaScript中訪問Chrome中的另一個選項卡?

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

當我運行命令我在控制檯中看到異常:

未捕獲拋出:DOMException:阻止訪問一個跨域框架與原點的框架 「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指向同一個原點

+0

的問題是它的解釋https://stackoverflow.com/a/23927967/2894798,它可以防止請求跨域從一個域到另一個域。 –

+0

是的,它的CORS,我想知道是否有任何解決方法? – monstro

+0

你想寫一個擴展名嗎? (你應該?) –

回答

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; 
    }); 
})(); 

但同樣:只有當你開始對原產地,這我猜你不是。

+0

是的,它的CORS,我想知道的區別如果有任何解決方法? – monstro

+0

@monstro:不。但也許有兩個小書籤:一個抓取URL到剪貼板並打開新標籤,另一個在新標籤上運行以填充剪貼板中的輸入。 –

相關問題