Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 覆盖文档.表单_Javascript_Google Chrome Extension - Fatal编程技术网

Javascript 覆盖文档.表单

Javascript 覆盖文档.表单,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我在工作中使用的一个应用程序只能在旧版本的Internet Explorer中运行。我发现出现这种情况的原因是由于ASPX文件中的脚本在登录后错误地访问document.forms属性: document.forms('frmAutoSubmit').DocList.value = window.WebCtl1.GetDocDirectoryList(''); 我创建了一个GoogleChrome扩展来解决这个问题,因为我没有应用程序的源代码,也没有以任何方式更改应用程序的权限。扩展创建一个脚

我在工作中使用的一个应用程序只能在旧版本的Internet Explorer中运行。我发现出现这种情况的原因是由于ASPX文件中的脚本在登录后错误地访问document.forms属性:

document.forms('frmAutoSubmit').DocList.value = window.WebCtl1.GetDocDirectoryList('');
我创建了一个GoogleChrome扩展来解决这个问题,因为我没有应用程序的源代码,也没有以任何方式更改应用程序的权限。扩展创建一个脚本元素并将其附加到页面。以下是执行的代码:

**inject.js**
(function (document) {
    var i = 0, j = document.forms.length;
    // Extend document to allow functional use
    document._forms = [];
    for (; i < j; ++i) {
        document._forms[i] = document.forms[i];
    }
    document.forms = function (form) {
        return document._forms[form];
    };
    console.debug('done');
})(document);

document.forms
是否为只读且不可更改的参数?有没有其他方法可以解决这个问题?

是的,我知道新函数将返回未定义的所有内容--我将编写该部分,以便在我知道可以重写参数后它可以工作。嗯,我相信这是一个范围问题,您正试图覆盖网页范围内的
文档.forms
,但实际操作是覆盖内容脚本的
文档.forms
。看到这篇文章我不这么认为,因为我实际上是在页面中添加了一个脚本元素,src属性设置为inject.js。您可以看到my console.debug语句与uncaughttypeerror发生在相同的上下文中。如果我包含了chrome扩展的完整源代码,会有帮助吗?是的,发布一些代码,这样我就可以模拟它了。理论上,它应该可以工作,因为您没有使用
executeScript
,也没有从内容脚本运行它。
done inject.js:18
Uncaught TypeError: Property 'forms' of object #<HTMLDocument> is not a function