首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何覆盖从另一个脚本加载的变量参数

问如何覆盖从另一个脚本加载的变量参数
EN

Stack Overflow用户
提问于 2012-10-24 02:22:41
回答 3查看 2.3K关注 0票数 8

我有一个动态加载代码的脚本。它是一种搜索引擎。当我按下搜索按钮时,该操作被触发,并打开一个包含许多参数的新页面。

我想覆盖使用新URL中的脚本生成的一个参数。JS代码很大,很难读懂,但我在Firebug DOM编辑器中找到了重要的部分。

以下是执行搜索时生成的URL的模式:

代码语言:javascript
复制
http://www.example.com/...?ParameterOne=123&ParameterTwo=Two&ThisParameter=Sth&ParameterFour=Four...

我要编辑的是"ThisParameter“并更改它的值。这是在DOM中编辑的部分,它完成了我想要的操作:

代码语言:javascript
复制
Foobar = {
_options: [],
...
var options = {"ParameterOne":123,"ParameterTwo":"Two","ThisParameter":"ABC","ParameterFour":Four,...}
...

这是当你在Firebug的DOM标签中选择"Copy path“时,"ThisParameter”的输出:

代码语言:javascript
复制
_options[0].ThisParameter

我想知道这是不是可能的。我之所以这么认为,是因为我可以在Firebug中更改这个参数,而且它工作得很完美。因此,如果Firebug可以编辑它,那么应该有一种方法可以用另一个脚本来影响它。

期待您的任何建议,提前感谢!

EN

回答 3

Stack Overflow用户

发布于 2012-10-24 02:55:14

由于您无法编辑动态脚本,因此您有以下选项:

  1. 你必须尝试给脚本提供正确的输入,并希望它使用你的值。
  2. 添加一个脚本到结果页面,它将读取url和参数,更改它并重定向,就像我们讨论的here。(如果您将所有内容都放在函数中,并且函数的名称是唯一的,则不应该与动态脚本冲突。)

您可以尝试使用search按钮将类似以下jQuery代码添加到页面中:

代码语言:javascript
复制
$('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
EN

Stack Overflow用户

发布于 2012-10-31 21:40:19

您可以覆盖任何js函数和方法,或者将您的代码包装在它周围。最简单的方法是查看您获得的代码,一旦加载了代码,您就可以使用自己的功能重新声明一个方法。

如果您正在尝试替换特定jquery请求中的参数,您甚至可以包装jquery的ajax方法:

代码语言:javascript
复制
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请求本身干净得多。

票数 0
EN

Stack Overflow用户

发布于 2012-11-02 06:30:03

我将进一步研究变量选项(var options)的范围,它是全局的吗?例如,如果你在Firebug控制台中输入'options‘,它会显示它的属性吗?

如果是这样的话,你可以通过你自己的脚本访问它,改变就是值,例如

代码语言:javascript
复制
options.ThisParameter = 'my-own-value';

您可以将脚本挂钩到搜索按钮的单击事件。

我希望这会有帮助,如果你有一些示例代码,它可能会更具体。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13036770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档