Javascript代码为"点击"在雅虎邮件中撰写按钮?

时间:2014-09-15 22:40:30

标签: javascript email dom

我尝试将其作为书签,但没有任何反应:

javascript:(function(){window.document.getElementById(".Compose").click();})

错误吊案显示了这一点:

[Error] TypeError: 'null' is not an object (evaluating 'window.document.getElementById(".Compose").click')
    (anonymous function) (launch, line 1)

我想这样做,因为我只使用网络邮件,而不是邮件客户端。 我的目标是能够从网页复制文本,然后打开一个雅虎邮件窗口,单击“撰写”并粘贴我复制的对象。我正在尝试制作一个书签,打开雅虎邮件,然后点击撰写。然后我可以自己手动填写目的地地址。我的语法在哪里?

附录:这也作为书签失败:

的javascript:(函数(){$( “BTN-撰写”)点击()})();

控制台窗口也没有显示任何错误。 但是这可以在控制台窗口中使用

$( “BTN-撰写”)。单击()

3 个答案:

答案 0 :(得分:1)

除非字段的id是“.Compose”(它不是),否则此代码将不起作用。

尝试:document.getElementById('Compose')

答案 1 :(得分:1)

我刚刚接收了我的Yahoo邮件并在JS控制台中执行了此操作:

$(".btn-compose").click()

它加载了撰写窗口。

似乎雅虎邮件已经使用了jQuery库,因此您可以使用类名“btn-compose”获取所有元素,并使用上面的代码触发“click”事件。

如果你想避免使用jQuery,这也有效:

document.getElementsByClassName('btn-compose')[0].click()

getElementsByClassName返回一个列表,因此[0]获取第一个元素。

答案 2 :(得分:0)

好吧,为了让jQuery在Tomlet代码中指示的书签中工作,我必须首先在书签中加载查询。我发现这个站点生成了必要的代码:

http://benalman.com/code/test/jquery-run-code-bookmarklet/

也把它压成了一个书签!

在控制台中工作的那一行会膨胀为:

javascript:(function(e,a,g,h,f,c,b,d)%7Bif(!(f=e.jQuery)%7C%7Cg%3Ef.fn.jquery%7C%7Ch(f))%7Bc=a.createElement(%22script%22);c.type=%22text/javascript%22;c.src=%22http://ajax.googleapis.com/ajax/libs/jquery/%22+g+%22/jquery.min.js%22;c.onload=c.onreadystatechange=function()%7Bif(!b&&(!(d=this.readyState)%7C%7Cd==%22loaded%22%7C%7Cd==%22complete%22))%7Bh((f=e.jQuery).noConflict(1),b=1);f(c).remove()%7D%7D;a.documentElement.childNodes%5B0%5D.appendChild(c)%7D%7D)(window,document,%221.3.2%22,function($,L)%7Bjavascript:(function()%7B$(%22.btn-compose%22).click()%7D)();%7D);

可以美化为:

javascript: (function(e, a, g, h, f, c, b, d) {
    if (!(f = e.jQuery) || g > f.fn.jquery || h(f)) {
        c = a.createElement("script");
        c.type = "text/javascript";
        c.src = "http://ajax.googleapis.com/ajax/libs/jquery/" + g + "/jquery.min.js";
        c.onload = c.onreadystatechange = function() {
            if (!b && (!(d = this.readyState) || d == "loaded" || d == "complete")) {
                h((f = e.jQuery).noConflict(1), b = 1);
                f(c).remove()
            }
        };
        a.documentElement.childNodes[0].appendChild(c)
    }
})(window, document, "1.3.2", function($, L) {
    javascript: (function() {
        $(".btn-compose").click()
    })();
});

我希望我有把它写成jQuery-less的知识。