带有POST的Javascript bookmarklet中的新选项卡

时间:2017-12-08 08:54:03

标签: javascript post tabs bookmarklet

希望每个人都过得愉快!我试图创建一个书签,自动打开页面上带有POST标题的链接,但只有最后一个链接扩展到新页面。这有什么理由吗?(如果是这样,我怎么能看到修复它?)

javascript: (function() {
        function openWindowWithPost(url, data) {
            var form = document.createElement("form");
            form.target = "_blank";
            form.method = "POST";
            form.action = url;
            form.style.display = "none";

            for (var key in data) {
                var input = document.createElement("input");
                input.type = "hidden";
                input.name = key;
                input.value = data[key];
                form.appendChild(input);
            }

            document.body.appendChild(form);
            form.submit();
            document.body.removeChild(form);
        }
        var els = document.getElementsByTagName("a");
        for (var i = 0, l = els.length; i < l; i++) {
            var el = els[i];

            console.log(typeof el.href);
            console.log(el.href);
            if (el.href.startsWith('example.com')) {
                console.log(el.href.slice(39));
                openWindowWithPost("example.php", {
                    id: el.href.slice(39),
                    pdf: "-"
                });
            }
        }
    })();

谢谢!

1 个答案:

答案 0 :(得分:0)

您的JavaScript代码就像是页面中的代码一样运行(您可能知道),其权限都有其限制。

浏览器不允许页面中的JavaScript代码打开无限数量的窗口,因为当他们曾经允许这样做时,它被恶意网站滥用。因此,当页面上的代码尝试这样做时,浏览器会阻止它。 如何的具体细节阻止了它以及它允许​​事件发生的程度是特定于浏览器的。

您可能需要在每个窗口中打开一个用户事件(例如,重复触发书签,并让书签一次执行一个链接)。