Ini adalah contoh yang ingin saya lakukan. Setiap kali kita berada di url target yaitu stackoverflow muncul footer lengket di bagian bawah dengan tombol. Salah satu tombol untuk mengetik sesuatu dalam pencarian, kirimkan formulir. Setelah ini menunggu halaman dimuat dan melakukan sesuatu pada halaman yang baru saja dimuat, yaitu klik tautan pertama.

Saya menemukan ini tidak mungkin dengan hanya menjalankan klik setelah pengiriman karena bingkai halaman berubah atau sesuatu seperti itu, bagaimana mungkin melakukan ini dengan tampermonkey.

// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://stackoverflow.com/
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    $('body').append('<div id="test"><p><button onclick="myFunction()">Click me</button></p></div>');
    $('body').append(
        `<script type="text/javascript">
             function myFunction() {
                 // page 1
                 document.querySelector('#search > div > input').value="tampermonkey";
                 document.forms[0].submit();

                 // page 2 (DOEST WORK)
                 document.querySelector('#question-summary-29592068 > div.summary > div.result-link > h3 > a');
             }
         </script>`
    );

    $('#test').css({'position': 'fixed',
                   'left': '0',
                   'bottom': '0',
                   'width': '100%',
                   'background-color': 'red',
                   'color': 'white',
                   'text-align': 'center',
                   'z-index':'1'
                  });

})();
2
skillsboy 11 Maret 2020, 01:36

1 menjawab

Jawaban Terbaik

Salah satu alasan skrip Anda mungkin tidak berfungsi adalah karena di bagian atas skrip tertulis

// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://stackoverflow.com/
// @grant        none
// ==/UserScript==


The // @match hanya cocok di beranda stackoverflow.com yang tidak menyertakan halaman pencarian sehingga @match harus // @match https://stackoverflow.com/* yang cocok dengan halaman beranda dan halaman pencarian. Anda juga harus membuatnya jadi "Click Me!" tombol hanya ditampilkan di beranda dengan menggunakan pernyataan if. Saya juga benar-benar memecahkan masalah Anda jika Anda menginginkannya.

// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://stackoverflow.com/*
// @grant        none
// ==/UserScript==

window.onload = function() {
    'use strict';
    if (location.href == "https://stackoverflow.com/search?q=tampermonkey") {
        alert(document.querySelector('#question-summary-29592068 > div.summary > div.result-link > h3 > a'));
    }else {
        $('body').append('<div id="test"><p><button onclick="myFunction()">Click me</button></p></div>');
        $('body').append(
            `<script type="text/javascript">
                 function myFunction() {
                     // page 1
                     document.querySelector('#search > div > input').value="tampermonkey";
                     document.forms[0].submit();
                 }
            </script>`
        );

        $('#test').css({
            'position': 'fixed',
            'left': '0',
            'bottom': '0',
            'width': '100%',
            'background-color': 'red',
            'color': 'white',
            'text-align': 'center',
            'z-index':'1'
        });
    }

};
1
Moo Craft 11 Maret 2020, 00:37