2015-10-11 45 views
0

打開我想創建一個簡單的書籤其中:無法在新窗口中執行功能的小書籤

  1. 打開特定網站在新標籤頁(窗口)
  2. 並提交一個字符串,該網站的搜索領域。

我在做單獨1和2的成功,但把它們在一起時 的標籤,而不搜索字段接受任何輸入打開。

我不知道我在做什麼錯在這裏。 你可以建議什麼解決方案?

我的代碼:

(function(foo){ 

    // 1.) open new tab/window 
    var myWindow = window.open('http://www.fakespot.com/', '_blank');  
    myWindow.focus(); 

    // 2.) input + click submit button 
    document.getElementById("url").value = "test input"; 
    document.getElementsByName("commit")[0].click(); 
})('foo') 

無法正常工作或:

... 
    myWindow.document.getElementById("url").value = link; 
    myWindow.document.getElementsByName("commit")[0].click(); 
    ... 

變換JavaScript插入書籤的位置: http://chriszarate.github.io/bookmarkleter/

+0

您將需要使用類似TaperMonkey – epascarello

+0

爲什麼Javascript讓我們在這裏?實際突破點在哪裏? – pykong

+0

問題是您正在運行的小書籤代碼不適用於新窗口。使用相同的原產地政策,您需要首先登錄網站,然後點擊書籤才能使代碼正常工作。如果這是正確的,那麼您需要添加代碼以等待窗口加載,而不是您可以引用頁面內部的表單元素。 – epascarello

回答

0

你可以完成你想什麼去做 使用HTML5 localStorage。這是一個如何工作的例子。在2個獨立的選項卡中打開附帶的提琴並在它們之間傳遞消息!

// HTML(僅用於測試)

<!-- This is your parent window --> 
<input type="text" id="message1" /> 
<button type="button" value="Send Message" onclick="updateStorageEvent()">Send Message</button> 

<!-- This would be your theoretical second window --> 
<!-- Open this fiddle in a second tab then send messages to see the results in the other window--> 
<p id="messageReceived"></p> 

// JS

// Parent Window 
var data = document.getElementById('message1'); 

function updateStorageEvent() { 
    localStorage.setItem('storage-event', data.value); 
} 

// Target Window 
var output = document.getElementById('messageReceived'); 

window.addEventListener('storage', function (event) { 
    output.innerHTML = event.newValue; 
}); 

這裏是鏈接到顯示該工作小提琴。右鍵單擊鏈接並選擇在新選項卡中打開。這樣做兩次,你可以在它們之間傳遞消息。 http://jsfiddle.net/wpwelch/khje9Lh3/2/

+0

THX,嗡嗡聲!我需要大約三天的時間來學習如何實現這一點。 – pykong

+0

我試過了,但是我看不到如何使用HTML5 localStorage繞過原始策略問題。您提出的解決方案需要手動打開目標站點,這違背了我喜歡編寫的書籤的目的。或者我的執行錯誤? – pykong