如何使用 Bookmarklet 修改页面中的功能?

How to modify a function in a page using Bookmarklet?

假设我有一个 HTML 页面,它有自己的功能 myFunction()

<!DOCTYPE html>
<html>
<body>

<p>Click the button to trigger a function that will output "Hello World" in a p element with id="demo".</p>

<button onclick="myFunction()">Click me</button>

<p id="demo"></p>

<script>
function myFunction() {
    alert("stack overflow");
    document.getElementById("demo").innerHTML = "Hello World";
}
</script>

</body>
</html>

我想像这样更改myFunction()定义

function myFunction() {
    //alert("stack overflow");
    document.getElementById("demo").innerHTML = "Hello World";
}

使用 bookmarklet.So 有什么办法可以临时更改 def 吗? 我尝试使用 Chrome 控制台更改其定义并保持成功,但我想使用 bookmarklets.So 更改它,请帮助我。

因为它是全球性的,您可以在您的书签中执行此操作:

var oldFunction = myFunction;
myFunction = function() {
    alert("Hello world!");
};

或者如果您将小书签包含在 scping 函数中(通常是个好主意),可能会将旧值存储在 window 属性 而不是本地变量中(这样您就可以访问它从另一个小书签稍后恢复):

window.oldFunction = myFunction;
myFunction = function() {
    alert("Hello world!");
};

另一个小书签可以再次设置它:

myFunction = window.oldFunction; // or just = oldFunction if using a local var

实例:

function myFunction() {
  alert("Original function");
}
document.getElementById("btn-override").addEventListener("click", function() {
  window.oldFunction = myFunction;
  myFunction = function() {
    alert("New function");
  };
}, false);
document.getElementById("btn-restore").addEventListener("click", function() {
  myFunction = window.oldFunction;
}, false);
<input type="button" id="btn-call" value="Click to call myFunction" onclick="myFunction()">
<input type="button" id="btn-override" value="Click to override it">
<input type="button" id="btn-restore" value="Click to restore it">

试试这个:

    javascript: myFunction = function(){console.log('c')}