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

时间:2015-03-12 21:00:48

标签: javascript function 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。有没有办法暂时改变def? 我尝试使用Chrome控制台更改其def并保持成功,但我想使用bookmarklets更改它。所以请帮助我。

2 个答案:

答案 0 :(得分:0)

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

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

或者如果您将书签放在scping函数中(通常是个好主意),可能会将旧值存储在window属性而不是本地var上(因此您可以从另一个bookmarklet访问它以恢复它)后):

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

另一个书签可以重新设置:

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

直播示例:

&#13;
&#13;
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);
&#13;
<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">
&#13;
&#13;
&#13;

答案 1 :(得分:0)

试试这个:

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