【问题标题】:Why does this jQuery code cause IE8 error: "UNEXPECTED CALL TO METHOD OR PROPERTY ACCESS"为什么这个 jQuery 代码会导致 IE8 错误:“UNEXPECTED CALL TO METHOD OR PROPERTY ACCESS”
【发布时间】:2014-08-19 12:05:52
【问题描述】:

编辑:我使用的是 jQuery 1.8.3。

在下面的代码中,某些内容失败并导致 IE8 中出现 javascript 错误,并显示消息“UNEXPECTED CALL TO METHOD OR PROPERTY ACCESS”。由于它在 IE8 中,因此很难准确定位问题发生的位置。

你们能帮我弄清楚这可能是什么问题吗?此处是否有运行导致此类错误的 jQuery 函数?

clsLanguage.prototype.refreshTranslation = function () {

"use strict";

if (!this.disableliveupdate) {
    $('body').unbind('contentchange');
}

// if translation file was found look for elements to translate
    var tmp_cls = this;
    $('[data-language]').each(function () {
        // html element to do the translation on
        var html_element = $(this);
        // look for the elements language in the current language file
        if (tmp_cls.language_strings[html_element.attr('data-language')]) {

            $.each(tmp_cls.language_strings[html_element.attr('data-language')], function (key, value) { 
                if (key === 'innerHTML') {
                    html_element.html(value);
                } else if (key !== 'description') { //we skip description key, is just used as comment of the value
                    html_element.attr(key,value);
                }
            });

        } else {
            html_element.html(html_element.attr('data-language'));
        }

    });
    if (!this.disableliveupdate) {
        $('body').bind('contentchange', function () {
            //console.log('contentchange triggered');
            tmp_cls.refreshTranslation();
        });
    }

};

【问题讨论】:

  • 你用的是什么版本的jQuery?
  • 记得为旧的 IE 使用旧的 jquery 1.x 分支!
  • 您是否尝试过注释/删除"use strict"

标签: javascript jquery internet-explorer-8


【解决方案1】:

如果没有比错误消息更具体的内容,这很难回答,所以请尽量减少它。根据给出的信息:

  1. 这可能是对.html()的调用之一:

    ...
    html_element.html(value);
    ...
    html_element.html(html_element.attr('data-language'));
    

    .html() internally 使用 .innerHtml。您的错误可能是因为html_element 是一个无法调用的元素(参见corresponding MSDN article),例如:

    • 没有结束标签的元素 (input)
    • innerHtml 为只读的元素 (tr)
  2. 如果相关页面包含 HTML5-onlycustom 元素,这也可能是原因。

【讨论】:

  • 天哪,这解决了它。问题是在几个输入字段上使用 .html()。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
  • 2017-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
相关资源
最近更新 更多