我正在制作一个简单的Chrome扩展程序,并希望覆盖页面上的javascript函数。 javascript对我来说太复杂太懂了。这是代码的一部分:
}), define("components/Payout", ["react", "game-logic/clib", "game-logic/stateLib"], function(e, t, n) {
var r = e.DOM;
return e.createClass({
displayName: "Payout",
mixins: [e.addons.PureRenderMixin],
propTypes: {
engine: e.PropTypes.object.isRequired
},
getInitialState: function() {
return {
payout: 0
}
},
componentDidMount: function() {
window.requestAnimationFrame(this.draw)
},
draw: function() {
if (this.isMounted()) {
var e = t.calcGamePayout(t.getElapsedTimeWithLag(this.props.engine));
e ? this.setState({
payout: e * n.currentPlay(this.props.engine).bet
}) : this.setState({
payout: null
}), window.requestAnimationFrame(this.draw)
}
},
render: function() {
var e = n.currentPlay(this.props.engine).bet < 1e4 ? 2 : 0;
return r.span({
id: "payout"
}, t.formatSatoshis(this.state.payout, e))
}
})
}),
我想要劫持的功能&#39;是&#34;渲染&#34;功能。我将如何从外部JS文件中进行该操作?
我想要的是用调整后的内容替换该功能的内容。
答案 0 :(得分:0)
如果变量obj
包含该代码返回的对象,则可以分配给obj.render
:
obj.render = function() {
// your code here
};
请注意,您的代码无法像原始r
函数一样使用t
,n
或render
变量。这些变量仅在原始范围内可用,并且您的功能超出了该范围。
如果您希望能够调用原始渲染方法,可以执行以下操作:
var orig_render = obj.render;
obj.render = function() {
var oldrender = orig_render.bind(this);
// your code here, call oldrender() to call original version
};
这称为monkey patching。