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