Javascript 书签中的新标签 POST

New tab in Javascript bookmarklet with POST

希望每个人都过得愉快!我试图创建一个小书签,它可以在 POST headers 的页面上自动打开 links,但只有最后一个 link 被扩展到新页面中。有什么原因吗?(如果是这样,我该如何解决?)

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: "-"
                });
            }
        }
    })();

谢谢!

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

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

您可能需要为每个要打开的 window 设置一个用户事件(例如,重复触发小书签,并让小书签一次执行一个 link)。