Discussions » Development

为何我直接将脚本拖入chrome不能正确实现对页面js的改动

§
Posted: 2015/01/03
Edited: 2015/01/03

为何我直接将脚本拖入chrome不能正确实现对页面js的改动

内容如下

// ==UserScript==
// @name           fixIE func
// @author         none
// @description    fixIE
// @version        0.0
// @grant           none
// @include        *
// @match          http://www.xx.com/*
//@run-at    document-start
// ==/UserScript==
// 

function a2a2(){
return true;
}
CollectGarbage=a2a2;

拖入chrome后查看chrome生成的manifest.json 并没有正确设置match及runat

§
Posted: 2015/01/03

TamperMonkey 下可以这样

window.CollectGarbage = function () {
    return true;
};
§
Posted: 2015/01/03

问题不是这里的, 在于match及runat 没正确读取, 在chrome中变为了*和 无, 无法在document-start时运行,变为了document-idle

§
Posted: 2015/01/05

qi求答案啊

§
Posted: 2015/01/05
Edited: 2015/01/05

[code]
// ==UserScript==
// @id fixie
// @name Fixie
// @version 0.99
// @namespace http://x.xx.xxx/
// @author uu
// @description fixie
// @include *gzggzy.cn/*
// @run-at document-start
// ==/UserScript==

a2a2 = function () {
return true;
};
CollectGarbage=a2a2;
[/code]
恩这样正常导入了
但是所针对页面 中,还是被后面加载的js给清理掉了..
郁闷,难道就不能直接用userscript 而不用扩展来解决吗
目标页面 http://www.gzggzy.cn/qyww/sccx/basicInfoview.jsp?qybh=10026

§
Posted: 2015/01/06
Edited: 2015/01/06

用 __defineSetter__ 防止覆蓋

§
Posted: 2015/01/06
用 __defineSetter__ 防止覆蓋

求解释如何处理,

§
Posted: 2015/01/06
用 __defineSetter__ 防止覆蓋

求解释如何处理,

var ie_gc = function () { return true; };
Object.defineProperty(window, 'CollectGarbage', {
    set: function () {
        console.warn ('拒绝不合理的请求 :: 覆盖 CG 函数');
    },

    get: function () {
        return ie_gc;
    }
});

虽然你给的地址并没有覆盖掉这个函数,放到这里做个演示。

§
Posted: 2015/01/08
用 __defineSetter__ 防止覆蓋

求解释如何处理,
var ie_gc = function () { return true; };
Object.defineProperty(window, 'CollectGarbage', {
    set: function () {
        console.warn ('拒绝不合理的请求 :: 覆盖 CG 函数');
    },

    get: function () {
        return ie_gc;
    }
});

虽然你给的地址并没有覆盖掉这个函数,放到这里做个演示。

谢谢你的回复, 不过还是无效 lol

§
Posted: 2015/01/09
Edited: 2015/01/09
用 __defineSetter__ 防止覆蓋

求解释如何处理,
var ie_gc = function () { return true; };
Object.defineProperty(window, 'CollectGarbage', {
    set: function () {
        console.warn ('拒绝不合理的请求 :: 覆盖 CG 函数');
    },

    get: function () {
        return ie_gc;
    }
});

虽然你给的地址并没有覆盖掉这个函数,放到这里做个演示。

谢谢你的回复, 不过还是无效 lol
在 chrome 原生下怎么可能有效?需要改为注入的方式(插入 script),还要注意运行时间(document-start)。
§
Posted: 2015/01/09
用 __defineSetter__ 防止覆蓋
求解释如何处理,
var ie_gc = function () { return true; };
Object.defineProperty(window, 'CollectGarbage', {
    set: function () {
        console.warn ('拒绝不合理的请求 :: 覆盖 CG 函数');
    },

    get: function () {
        return ie_gc;
    }
});

虽然你给的地址并没有覆盖掉这个函数,放到这里做个演示。

谢谢你的回复, 不过还是无效 lol

在 chrome 原生下怎么可能有效?需要改为注入的方式(插入 script),还要注意运行时间(document-start)。

啊 我忘了是原生了(

§
Posted: 2015/01/09

看来 原生态 实现不了 插入方式 了?

§
Posted: 2015/01/09
看来 原生态 实现不了 插入方式 了?

能的哦。

(function (container, scr) {
    scr.textContent = '(' + (function () {
        Object.defineProperty(window, 'CollectGarbage', {
            set: function () {
                console.warn ('拒绝不合理的请求 :: 覆盖 CG 函数');
            },

            get: function () {
                return ie_gc;
            }
        });

    }).toString() + ')();';
    container.appendChild(scr);
})(document.head, document.createElement('script'));

当然 我没用过原生的 不知道 document 要不要特殊处理… 大体上是这个思路 (?)

Post reply

Sign in to post a reply.