将HTML字符串转换为DOM元素时无效的参数错误

时间:2018-08-09 05:58:13

标签: javascript domparser

我正在尝试将HTML字符串转换为DOM元素,但出现脚本错误:参数无效。我的Internet Explorer版本是9。请提出任何解决方案。下面是代码:

function open(htmlstring)
{
    var parser = new DOMParser();
    var doc = parser.parseFromString(htmlstring,"text/html");
}   

1 个答案:

答案 0 :(得分:0)

编辑:如果您获取的参数无效,则可能是您提供的参数格式不正确,在这种情况下,您可以将其包装在try,catch并评估htmlstring的情况下格式不正确。

您可以使用DOMParser填充器或polyfill。

/*
 * DOMParser HTML extension
 * 2012-09-04
 * 
 * By Eli Grey, http://eligrey.com
 * Public domain.
 * NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
 */

/*! @source https://gist.github.com/1129031 */
/*global document, DOMParser*/

(function(DOMParser) {
    "use strict";

    var
      DOMParser_proto = DOMParser.prototype
    , real_parseFromString = DOMParser_proto.parseFromString
    ;

    // Firefox/Opera/IE throw errors on unsupported types
    try {
        // WebKit returns null on unsupported types
        if ((new DOMParser).parseFromString("", "text/html")) {
            // text/html parsing is natively supported
            return;
        }
    } catch (ex) {}

    DOMParser_proto.parseFromString = function(markup, type) {
        if (/^\s*text\/html\s*(?:;|$)/i.test(type)) {
            var
              doc = document.implementation.createHTMLDocument("")
            ;
                if (markup.toLowerCase().indexOf('<!doctype') > -1) {
                    doc.documentElement.innerHTML = markup;
                }
                else {
                    doc.body.innerHTML = markup;
                }
            return doc;
        } else {
            return real_parseFromString.apply(this, arguments);
        }
    };
}(DOMParser));

来自:https://gist.github.com/eligrey/1129031 或只是在Internet Explorer 9的Google上寻找polyfill。甚至还有一个完整的ES6.js polyfill,它在IE9中不起作用的原因是,因为这种实现太旧了,所以很多现代的东西在这里都不起作用