覆盖document.forms

时间:2014-02-10 20:28:18

标签: javascript google-chrome-extension

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

document.forms('frmAutoSubmit').DocList.value = window.WebCtl1.GetDocDirectoryList('');

我创建了一个Google Chrome扩展程序来解决这个问题,因为我没有应用程序的源代码,也无权以任何方式更改应用程序。该扩展创建一个脚本元素并将其附加到页面。以下是执行的代码:

**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);

加载扩展并测试页面后,即使我的console.debug语句先执行,我仍然会收到相同的错误。

done inject.js:18
Uncaught TypeError: Property 'forms' of object #<HTMLDocument> is not a function

document.forms是一个只读且不可更改的参数吗?还有另一种攻击方式吗?

0 个答案:

没有答案