我有一个动态加载代码的脚本。它是一种搜索引擎。当我按下搜索按钮时,该操作被触发,并打开一个包含许多参数的新页面。
我想覆盖使用新URL中的脚本生成的一个参数。JS代码很大,很难读懂,但我在Firebug DOM编辑器中找到了重要的部分。
以下是执行搜索时生成的URL的模式:
http://www.example.com/...?ParameterOne=123&ParameterTwo=Two&ThisParameter=Sth&ParameterFour=Four...我要编辑的是"ThisParameter“并更改它的值。这是在DOM中编辑的部分,它完成了我想要的操作:
Foobar = {
_options: [],
...
var options = {"ParameterOne":123,"ParameterTwo":"Two","ThisParameter":"ABC","ParameterFour":Four,...}
...这是当你在Firebug的DOM标签中选择"Copy path“时,"ThisParameter”的输出:
_options[0].ThisParameter我想知道这是不是可能的。我之所以这么认为,是因为我可以在Firebug中更改这个参数,而且它工作得很完美。因此,如果Firebug可以编辑它,那么应该有一种方法可以用另一个脚本来影响它。
期待您的任何建议,提前感谢!
发布于 2012-10-24 02:55:14
由于您无法编辑动态脚本,因此您有以下选项:
您可以尝试使用search按钮将类似以下jQuery代码添加到页面中:
$('input[name=search_button_name]').click(function(e) {
e.preventDefault();
var form_search = $('#search_form_id');
$('<input>').attr({
type: 'hidden',
name: 'ThisParameter',
value: 'SomethingElse'
}).appendTo(form_search);
f.submit();
});发布于 2012-10-31 21:40:19
您可以覆盖任何js函数和方法,或者将您的代码包装在它周围。最简单的方法是查看您获得的代码,一旦加载了代码,您就可以使用自己的功能重新声明一个方法。
如果您正在尝试替换特定jquery请求中的参数,您甚至可以包装jquery的ajax方法:
var jquery_ajax = $.ajax
$.ajax = function(options){
// parse only a specific occurence
if(options.url.indexOf("example.com") > -1) {
// change the url/params object - depending on where the parameter is
options.params.ThisParameter = "My Custom value"
}
// call the original jquery ajax function
jquery_ajax(options);
}但是覆盖构建ajax请求的方法要比覆盖ajax请求本身干净得多。
发布于 2012-11-02 06:30:03
我将进一步研究变量选项(var options)的范围,它是全局的吗?例如,如果你在Firebug控制台中输入'options‘,它会显示它的属性吗?
如果是这样的话,你可以通过你自己的脚本访问它,改变就是值,例如
options.ThisParameter = 'my-own-value';您可以将脚本挂钩到搜索按钮的单击事件。
我希望这会有帮助,如果你有一些示例代码,它可能会更具体。
https://stackoverflow.com/questions/13036770
复制相似问题