javascript命令单独工作但不按顺序作为书签

时间:2014-09-16 16:53:16

标签: javascript bookmarklet

我有两个可单独使用的书签 1)

javascript:(function(){window.open("http://mail.yahoo.com");})();

2)

javascript:(function(){;document.getElementsByClassName('btn-compose')[0].click()})();

(上面的代码行通过这里的bookmarklet生成器: http://ted.mielczarek.org/code/mozilla/bookmarklet.html 并且每个小书签都工作正常)

但他们在一起的时候是这样的: 的javascript:(函数(){window.open(" http://mail.yahoo.com&#34); document.getElementsByClassName(' BTN-撰写')[0]。点击()}) ();

或者像这样:

javascript:(function(){window.open("http://mail.yahoo.com");})();
javascript:(function(){;document.getElementsByClassName('btn-compose')[0].click()})();

撰写窗口无法打开。我感觉DOM还没有准备好。

但这失败了:

javascript:(function(){window.open("http://mail.yahoo.com");})();
document.onreadystatechange = function () {
     if (document.readyState == "complete") {
    javascript:(function(){;document.getElementsByClassName('btn-compose')[0].click()})();
   }
 }

1 个答案:

答案 0 :(得分:2)

你有几个问题在继续。

  1. window.open()会打开一个新窗口。如果您想在该窗口上操作,则必须获取该窗口句柄,然后从该窗口获取文档。现在,您正尝试使用第二个脚本在原始窗口上操作。

  2. 由于浏览器安全限制,从一个窗口启动的脚本无法访问其他窗口中的其他域。

  3. 在我看来,您必须在Yahoo窗口打开后手动启动第二个脚本。或者,您需要使用可以访问新窗口的浏览器插件。


    您似乎也试图解决可能已经解决的问题(在Yahoo邮件中打开撰写窗口)。您可以在新窗口中打开一个URL,该窗口将直接启动撰写窗口,而无需入侵窗口按下按钮。

    有关将您带到Yahoo撰写窗口的URL的信息,请参阅this post。网址的一般形式为:http://compose.mail.yahoo.com/?to=TO&subject=SUBJECT&body=BODY