上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

油猴如何覆盖原来的function

[复制链接]
  • TA的每日心情
    无聊
    2024-7-25 23:04
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    3

    主题

    58

    回帖

    52

    积分

    初级工程师

    积分
    52

    新人报道

    发表于 2021-7-9 15:34:00 | 显示全部楼层 | 阅读模式

    本帖最后由 大药科技 于 2021-7-9 15:40 编辑

    html源码如下,我想使用油猴来改变原先openWindow函数由原来的在小窗口打开改为浏览器新标签打开,但是我怎么改都不行,不放在(function(){****})()也不行,望高手指点指点!

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>测试页</title></title>
    <script>
    function openWindow(url, width, height) {
        if (width == '') {
            width = screen.width - 20;
        }
        if (height == '') {
            height = screen.height - 120;
        }
        var win = window.open(url, '', 'height=' + height + 'px,width=' + width
            + 'px,resizable=yes,toolbar:0,menubar:0,scrollbars=1');
        return win;
    }
    </script>
    </head>
    <body>
    
    <a href="javascript:void(0);" onclick="javascript:openWindow('https://baidu.com','','')">综合办理</a>
    
    </body>
    </html>

    油猴代码如下:

    // ==UserScript==
    // @name 广西医疗基层window.open改写
    // @namespace 6666666666
    // @include  ***************
    // @run-at document-idle
    // ==/UserScript==
    
    (function(){
     function openWindow(url, width, height) {
        if (width == '') {
            width = screen.width - 20;
        }
        if (height == '') {
            height = screen.height - 120;
        }
        // if (url.indexOf('?') > 0) {
        //     url += "&username=" + cjkEncode(user_username);
        // } else {
        //     url += "?username=" + cjkEncode(user_username);
        // }
        var win = window.open(url);
        return win;
    }
    })();
  • TA的每日心情
    开心
    3 天前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4197

    回帖

    4061

    积分

    管理员

    积分
    4061

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2021-7-9 16:09:50 | 显示全部楼层
    声明unsafeWindow,然后unsafeWindow.openWindow=function(){xxxxx}
    这样试试
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5966

    回帖

    6763

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6763

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2021-7-9 19:58:26 | 显示全部楼层
    (function(){
    function openWindow(url, width, height) {
        if (width == '') {
            width = screen.width - 20;
        }
        if (height == '') {
            height = screen.height - 120;
        }
        // if (url.indexOf('?') > 0) {
        //     url += "&username=" + cjkEncode(user_username);
        // } else {
        //     url += "?username=" + cjkEncode(user_username);
        // }
        var win = window.open(url);
        return win;
    }
        window.openWindow=openWindow
    })();
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-7-25 23:04
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    3

    主题

    58

    回帖

    52

    积分

    初级工程师

    积分
    52

    新人报道

    发表于 2021-7-9 23:43:48 | 显示全部楼层
    李恒道 发表于 2021-7-9 19:58
    (function(){
    function openWindow(url, width, height) {
        if (width == '') {

    可以 可以 ,这是作用域在作怪吗。。。
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-7-25 23:04
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    3

    主题

    58

    回帖

    52

    积分

    初级工程师

    积分
    52

    新人报道

    发表于 2021-7-9 23:44:36 | 显示全部楼层
    王一之 发表于 2021-7-9 16:09
    声明unsafeWindow,然后unsafeWindow.openWindow=function(){xxxxx}
    这样试试

    试了站长大大的代码 确实可以  你这个应该也可以,谢谢指点!
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5966

    回帖

    6763

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6763

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2021-7-10 00:31:48 | 显示全部楼层
    大药科技 发表于 2021-7-9 23:43
    可以 可以 ,这是作用域在作怪吗。。。

    不知道怎么形容....我没研究过直接声明函数的替换问题,一般来说都要对挂载的位置函数进行替换的
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-7-25 23:04
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    3

    主题

    58

    回帖

    52

    积分

    初级工程师

    积分
    52

    新人报道

    发表于 2021-7-10 09:41:51 | 显示全部楼层
    李恒道 发表于 2021-7-10 00:31
    不知道怎么形容....我没研究过直接声明函数的替换问题,一般来说都要对挂载的位置函数进行替换的 ...

    我都不知道还要挂载到对应函数覆盖才行,我看网上的教程都是说直接声明相同函数就行了。。。
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表