Используя Javascript, чтобы нажать на данную кнопку и открыть ее в новом окне
Когда эта страница загружается, я хочу автоматически смоделировать send me this thing
кнопка, открывая ее в новом окне (или новой вкладке)
- Там будет только один
send me this thing
кнопка на любой странице, как это
Зачем?
Это для Greasekit на Fluid.app, который похож на Greasemonkey.
1 ответ
Эта кнопка является ссылкой, и эта страница использует jQuery. Таким образом, вы можете получить кнопку, как:
var buyItBtn = $("a:contains('Send me this thing')");
Затем измените ссылку, чтобы открыть в новой вкладке / окне.
Затем нажмите на ссылку.
Код является:
//-- Note that :contains() is case-sensitive.
var buyItBtn = $("a:contains('Send me this thing')");
buyItBtn.attr ("target", "_blank");
buyItBtn[0].click ();
НО, знайте, что современные блокировщики всплывающих окон будут блокировать это, я не знаю, какой веб-набор встроен в вашу версию Fluid. Скажите своему блокировщику всплывающих окон, чтобы разрешить именно эти всплывающие окна.
Кроме того, поскольку это Greasekit, вам нужно внедрить приведенный выше код, поэтому полный пользовательский скрипт будет выглядеть примерно так:
// ==UserScript==
// @name _Amazon-like store, buy things in a new window
// @include https://dl.dropboxusercontent.com/u/5546881/*
// @grant GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
introduced in GM 1.0. It restores the sandbox.
*/
function GM_main () {
//-- Note that :contains() is case-sensitive.
var buyItBtn = $("a:contains('Send me this thing')");
buyItBtn.attr ("target", "_blank");
buyItBtn[0].click ();
}
addJS_Node (null, null, GM_main);
function addJS_Node (text, s_URL, funcToRun, runOnLoad) {
var D = document;
var scriptNode = D.createElement ('script');
if (runOnLoad) {
scriptNode.addEventListener ("load", runOnLoad, false);
}
scriptNode.type = "text/javascript";
if (text) scriptNode.textContent = text;
if (s_URL) scriptNode.src = s_URL;
if (funcToRun) scriptNode.textContent = '(' + funcToRun.toString() + ')()';
var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
targ.appendChild (scriptNode);
}