简体   繁体   中英

How to get function parameter values from an HTML Page using bookmarklet?

The code below saves data entered in textarea using saveFieldData() .I want to use a Delete Button as a bookmarklet which will make this field blank and save the same in the server.

<textarea rows="4" cols="49" name="Synonym" id="Synonym" onchange="saveFieldData(85261, this, 'docProductInfo', 'Synonym', 84796);"></textarea>

So here is my bookmarklet

javascript:(function(){var sy=document.getElementById("Synonym");sy.value="";saveFieldData(85261,sy, 'docProductInfo', 'Synonym', 84796);})();

It deletes the data perfectly but the problem is whenever the page reloads it assigns some new values as function parameters as a result my code fails to work.For example after page reloads the function parameter changes like this

saveFieldData(85261, this, 'docProductInfo', 'Synonym', 84789);

basically the last parameter changes.So,Is there any way so that my bookmarklet will detect that parameter automatically and delete that field successfully?

Without knowing more about your page, I can't give you an ideal answer. There could easily be a better way, but based only on what you have shown, the only answer I see is to use a regular expression something like this:

sy = document.getElementById("Synonym");
id = sy.onchange.toString().match(/saveFieldData\(.+?,.+?,.+?,.+?,\s*(\d+)\)/)[1];

If you just need to invoke the onchange handler you don't need to know it's parameters:

var sy=document.getElementById("Synonym");
var fn=sy.onchange;
sy.value="";
fn.call(sy);

Or more simply, since the onchange handler doesn't use any this within it:

fn();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM