我有一个动态加载代码的脚本。它是一种搜索引擎。当我按下搜索按钮时,操作将被触发,并打开一个包含许多参数的新页面。
我想覆盖新网址中脚本生成的其中一个参数。 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选项卡中选择“复制路径”时,这是“ThisParameter”的输出:
_options[0].ThisParameter
我想知道这是可能的。是什么让我觉得它是,我可以在Firebug中更改此参数,它完美地运行。因此,如果Firebug可以编辑它,应该有办法用另一个脚本来影响它。
期待任何建议,提前谢谢!
答案 0 :(得分:1)
由于您无法编辑动态脚本,因此您有以下选项:
您可以尝试使用搜索按钮添加类似此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();
});
答案 1 :(得分:0)
您可以覆盖任何js函数和方法,或者围绕它包装代码。最简单的方法是查看您获得的代码,一旦加载,您就可以使用自己的功能重新声明一个方法。
我试图替换特定jquery请求中的参数,你甚至可以包装jquerys 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请求本身会更加清晰。
答案 2 :(得分:0)
我会进一步调查变量 options (var options
)的范围,它是全局的吗?即如果您在Firebug控制台中键入“选项”,它是否显示其属性?
如果是这样,您可以通过自己的脚本访问它,并且更改是值,例如
options.ThisParameter = 'my-own-value';
您可以将脚本挂钩到搜索按钮的点击事件。
我希望这会有所帮助,如果你在某个地方有一些示例代码可能更具体。