无法在使用Bookmarklet打开的新窗口上执行功能

时间:2015-10-11 22:00:43

标签: javascript tabs bookmarklet

我想创建一个简单的书签:

  1. 在新标签页(窗口)中打开特定网站
  2. 并将一个字符串提交到网站的搜索字段。
  3. 我成功地分别做了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转换为bookmarklet: http://chriszarate.github.io/bookmarkleter/

1 个答案:

答案 0 :(得分: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/