如果答案非常明顯,我不會感到驚訝,但我不知道為什么我的用戶腳本不起作用。參考的所有 CSS 類都存在于它打算運行的站點中(作業得很好),但是我在運行插入到 html 中的函式時遇到了問題。
// ==UserScript==
// @name New Userscript
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match https://www.zapsplat.com/*
// @icon https://www.google.com/s2/favicons?domain=zapsplat.com
// @grant none
// ==/UserScript==
(function() {
'use strict';
var btns = document.createElement('nav');
//
var link = window.location.href;
//
var div = document.createElement('div');
//
div.innerHTML = "<script>function bak(){var num = link.match(/\d /);num -= 1;var back = link.replace('/\d /',num);window.location.replace(back);};function fwod(){var num = link.match(/\d /);num = 1;var fwd = link.replace('/\d /',num);window.location.replace(back);};</script>";
//
document.body.prepend(div);
//
btns.innerHTML = '<div class="pagination-container uk-margin-top">::before<ul class="uk-pagination"><li><a onClick ="bak()">BACK</a></li><li><a onClick = "fwod()">FWD</a></li></ul></div>';
//
document.body.prepend(btns);
//
})();
根據 Phuzi 和 Ivar 的評論,我將指出“運行函式的問題”是參考錯誤,因為函式是“未定義的”。這可能是一個與 DOM 相關的問題,盡管我對此還不夠了解,無法做出任何判斷。
v2(將 var div 更改為代碼以提高可讀性)(僅我更改的部分)仍然不起作用,但也許更好?
//
var code = document.createElement('script');
//
code.innerHTML = "function bak(){var num = link.match(/\d /);num -= 1;var back = link.replace('/\d /',num);window.location.replace(back);};function fwod(){var num = link.match(/\d /);num = 1;var fwd = link.replace('/\d /',num);window.location.replace(back);};";
//
document.body.prepend(code);
v1 中的錯誤訊息
未捕獲的 ReferenceError:bak 未在 HTMLAnchorElement.onclick ((index):187) 中定義
v2 中的錯誤訊息
VM4624:1 Uncaught ReferenceError: 鏈接未定義在 bak (:1:26) at HTMLAnchorElement.onclick ((index):187)
uj5u.com熱心網友回復:
你真的應該使用addEventListener而不是onclick屬性。通過這種方式,您不需要將 JavaScript 添加到您正在修改的頁面中,而是可以將其保存在您的用戶腳本中,這樣可能更容易除錯。
您還需要根據需要移動當前頁面 url 中的link變數back和forward函式 - SPA 傾向于修改頁面 url 而不重新加載頁面,因此不會重新加載您的用戶腳本(最好是安全而不是抱歉。)
(function() {
'use strict';
var btns = document.createElement('nav');
btns.innerHTML = '<div ><ul ><li><a>BACK</a></li><li><a>FWD</a></li></ul></div>';
document.body.prepend(btns);
btns.querySelector('ul.uk-pagination li:nth-child(1) a')
.addEventListener('click', back);
btns.querySelector('ul.uk-pagination li:nth-child(2) a')
.addEventListener('click', forward);
})();
function back() {
var link = window.location.href;
var num = link.match(/\d /);
num -= 1;
var back = link.replace('/\d /', num);
window.location.replace(back);
}
function forward() {
var link = window.location.href;
var num = link.match(/\d /);
num = 1;
var fwd = link.replace('/\d /', num);
window.location.replace(fwd);
}
從 JS 的角度來看應該這樣做,但是您可能需要一些額外的 CSS 來確保您的 CSSnav顯示在所有頁面上。
我相信這還會有其他問題,當它們出現時,不要試圖更新您的問題。相反,您應該向另一個人詢問您所面臨問題的具體細節。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/381490.html
標籤:javascript html 篡改猴子
