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

油猴如何覆盖原来的function

[复制链接]

该用户从未签到

2

主题

41

帖子

30

积分

助理工程师

Rank: 1

积分
30
发表于 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的每日心情
    开心
    5 天前
  • 签到天数: 49 天

    [LV.5]常住居民I

    138

    主题

    1814

    帖子

    1988

    积分

    管理员

    Rank: 10Rank: 10Rank: 10

    积分
    1988

    猫咪币纪念章热心会员活跃会员突出贡献三好学生中秋纪念章国庆纪念章

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

    使用道具 举报

  • TA的每日心情

    2022-6-4 20:51
  • 签到天数: 32 天

    [LV.5]常住居民I

    328

    主题

    2880

    帖子

    2890

    积分

    荣誉开发者

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

    Rank: 10Rank: 10Rank: 10

    积分
    2890

    猫咪币纪念章

    发表于 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
    })();
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    该用户从未签到

    2

    主题

    41

    帖子

    30

    积分

    助理工程师

    Rank: 1

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

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

    使用道具 举报

    该用户从未签到

    2

    主题

    41

    帖子

    30

    积分

    助理工程师

    Rank: 1

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

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

    使用道具 举报

  • TA的每日心情

    2022-6-4 20:51
  • 签到天数: 32 天

    [LV.5]常住居民I

    328

    主题

    2880

    帖子

    2890

    积分

    荣誉开发者

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

    Rank: 10Rank: 10Rank: 10

    积分
    2890

    猫咪币纪念章

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

    不知道怎么形容....我没研究过直接声明函数的替换问题,一般来说都要对挂载的位置函数进行替换的
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    该用户从未签到

    2

    主题

    41

    帖子

    30

    积分

    助理工程师

    Rank: 1

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

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

    使用道具 举报

    发表回复

    本版积分规则

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