上一主题 下一主题
返回列表 发新帖

油猴如何覆盖原来的function

[复制链接]

1

主题

10

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 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;
}
})();
回复

使用道具 举报

46

主题

438

帖子

628

积分

管理员

Rank: 9Rank: 9Rank: 9

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

使用道具 举报

80

主题

545

帖子

764

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
764
发表于 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
})();
回复

使用道具 举报

1

主题

10

帖子

22

积分

新手上路

Rank: 1

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

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

使用道具 举报

1

主题

10

帖子

22

积分

新手上路

Rank: 1

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

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

使用道具 举报

80

主题

545

帖子

764

积分

管理员

Rank: 9Rank: 9Rank: 9

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

不知道怎么形容....我没研究过直接声明函数的替换问题,一般来说都要对挂载的位置函数进行替换的
回复

使用道具 举报

1

主题

10

帖子

22

积分

新手上路

Rank: 1

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

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

使用道具 举报

发表回复

本版积分规则

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