Gab*_*ira 2 javascript jquery method-call
我从jquery的json调用中收到一些'body'内容,在那里我可以通过执行以下方式获取返回的唯一javascript元素:
script_element = $(data.body)[1]
Run Code Online (Sandbox Code Playgroud)
这相当于:
<script type=?"text/?javascript">?
updater('foo', 'bar', {}, '0', constant='');
</script>?
Run Code Online (Sandbox Code Playgroud)
所以,typeof script_element回报"object"
而且,如果我跑script_element.innerText,我可以得到:
updater('foo', 'bar', {}, '0', constant='');
Run Code Online (Sandbox Code Playgroud)
收到这个脚本之后,我现在正在做的就是运行eval它,但是搜索我无法找到运行eval更改函数调用参数的方法.
我正在尝试做的是更改third调用的参数,在这种情况下{},可以根据json调用的返回而改变,所以我不能只搜索{}.
我也可以这样做script_element.text.split(',')[2],并在运行中更改此文本,但我认为应该有更好的方法来做到这一点.
我不知道javascript是否可以识别和处理"未来的方法调用",但仍然认为应该有更好的方法.
任何的想法?
你可以做的是遮蔽函数,以便能够改变第三个参数.你应该在获取JSON之前定义该阴影函数.
var originalUpdater = updater; // keep old function to call
// overwrite (shadowing)
updater = function(a, b, c, d, e) {
// change c appropriately here
originalUpdater(a, b, c, d, e);
}
Run Code Online (Sandbox Code Playgroud)
然后你仍然可以只是eval它(这不是很安全,但如果我没有误,那不是你的观点),它会调用阴影函数.
更通用的阴影方法将遵循以下方式:
var originalUpdater = updater; // keep old function to call
// overwrite (shadowing)
updater = function() {
// change arguments[2] appropriately here
originalUpdater.apply(this, arguments);
}
Run Code Online (Sandbox Code Playgroud)
小提琴:http://jsfiddle.net/n7dLX/
| 归档时间: |
|
| 查看次数: |
542 次 |
| 最近记录: |