大药科技 发表于 2021-7-9 15:34:00

油猴如何覆盖原来的function

本帖最后由 大药科技 于 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;
}
})();
```

王一之 发表于 2021-7-9 16:09:50

声明unsafeWindow,然后unsafeWindow.openWindow=function(){xxxxx}
这样试试

李恒道 发表于 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
})();

大药科技 发表于 2021-7-9 23:43:48

李恒道 发表于 2021-7-9 19:58
(function(){
function openWindow(url, width, height) {
    if (width == '') {


{:4_110:}可以 可以 ,这是作用域在作怪吗。。。

大药科技 发表于 2021-7-9 23:44:36

王一之 发表于 2021-7-9 16:09
声明unsafeWindow,然后unsafeWindow.openWindow=function(){xxxxx}
这样试试

{:4_108:}试了站长大大的代码 确实可以你这个应该也可以,谢谢指点!

李恒道 发表于 2021-7-10 00:31:48

大药科技 发表于 2021-7-9 23:43
可以 可以 ,这是作用域在作怪吗。。。

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

大药科技 发表于 2021-7-10 09:41:51

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

我都不知道还要挂载到对应函数覆盖才行,我看网上的教程都是说直接声明相同函数就行了。。。
页: [1]
查看完整版本: 油猴如何覆盖原来的function