ZBLOG

(function() { var originalInnerHTML = Object.getOwnPropertyDescriptor(Element.prototype, "innerHTML").set; Object.defineProperty(Element.prototype, "innerHTML", { set: function(value) { let hookstr = replace_url(value) ...

在你提供的代码中,get 方法尝试获取 innerHTML 的值,但使用了 originalInnerHTML.call(this)。这里的问题是 originalInnerHTML 其实是 innerHTML 的 setter 方法,而不是 getter,因此调用它会导致未定义(undefined)。

要修复这个问题,你需要保存原始的 getter 和 setter,然后在 getter 中正确地返回当前元素的 innerHTML 值。下面是修复后的代码:

(function() {
    var originalInnerHTMLGetter = Object.getOwnPropertyDescriptor(Element.prototype, "innerHTML").get;
    var originalInnerHTMLSetter = Object.getOwnPropertyDescriptor(Element.prototype, "innerHTML").set;

    Object.defineProperty(Element.prototype, "innerHTML", {
        set: function(value) {
            let hookstr = replace_url(value);
            console.log("Setting innerHTML to:", value, "hook innerHTML to:", hookstr);
            originalInnerHTMLSetter.call(this, hookstr);
        },
        get: function() {
            let value = originalInnerHTMLGetter.call(this);
            console.log("Getting innerHTML:", value);
            return value;
        }
    });
})();

修正内容:

  1. 分别保存 gettersetter 到不同的变量:originalInnerHTMLGetteroriginalInnerHTMLSetter
  2. get 方法中调用正确的 getter,以便可以获得实际的 innerHTML 值。

这样修改后,获取到的值就不会是 undefined 了,应该能够正常返回当前元素的 innerHTML.


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=19252

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?