【问题标题】:IE not converting string to HTML using jqueryIE 不使用 jquery 将字符串转换为 HTML
【发布时间】:2012-09-07 18:00:22
【问题描述】:

我将一个字符串传递给一个表,其中一些类在字符串 (img) 中包含 html 标记。在转换后使用 innerHTML 附加此表后,在 chrome 和 FF 中效果很好,但在 IE 中效果不佳。

下面的代码看起来像这样:

var dfd = $.Deferred();
        var requestParams = {};
        templatingIsDone = jsonRequest(ResolveUrl("~/Results/ResultsService.asmx/GetMostRecentUploadsService"), requestParams).success(function (data) {
            if (data.Success == true) {
                var jheaderResults = $("#jobheaderResults tbody");  //HTML Markup
                try {
                    jheaderResults.empty();
                    var results = data.Results;

                    $.tmpl("jobHeaderTemplate", data.Results).appendTo(jheaderResults);

                    var allCaterLinks = $(".CaterRequestLinking");
                    $.each(allCaterLinks, function (index, value) {
                        if ($.browser.msie) {
                            value.innerHTML = value.innerText;
                        } else {
                            value.innerHTML = value.textContent;
                        }
                    });

                    $("#jobheaderResults tbody").trigger("update");

结果在“jobheaderResults”表中显示其在 Firefox 和 Chrome 中的图像。但是 IE 不呈现图像,而是显示 html 标记。如何将其转换为 HTML?

我也尝试了以下代码,但无济于事:

                  //value.innerHTML = value.empty().html(value.innerHTML);
                  //value.innerHTML = value.textContent;
                  //value.innerHTML = value.innerHTML.html();
                  //value.html(value.innerText);
                  //value.innerHTML = value.outerText;

以上方法都不起作用,它们都无法将图像渲染到 IE 上。

有关额外信息,我要转换的实际标记是:

"<a href=\"#\" class=\"caterReqClass\"><img src=\"/HWVDB/images/Cater-Icon.jpg\" alt=\"CaterReqAlternate\"/></a>"

【问题讨论】:

  • support.microsoft.com/kb/276228 我记得不久前有关innerHTML 在IE 中失败的事情。解决方法是获取 DOM 中的元素并将 .appendChild 附加到它。你试过了吗?
  • 我尝试使用 jquery append 函数,但在 $.each 函数下它只是失败了。没有尝试过来自 DOM 元素的 .appendChild 函数,可以试一试。我希望留在 jquery 的范围内

标签: javascript jquery internet-explorer-9 innerhtml


【解决方案1】:

试试这个

    $.each(allCaterLinks, function () {
        $('.allCaterLinks').html($('.allCaterLinks').text());
    });

这应该适用于所有浏览器。来自 jQuery.com:“此 (.html()) 方法使用浏览器的 innerHTML 属性。某些浏览器可能不会返回与原始文档中的 HTML 源完全相同的 HTML。例如,Internet Explorer 有时会省略属性值周围的引号如果它们只包含字母数字字符。"

【讨论】:

  • 我在使用 IE 调试器之前和之后都尝试过,它抱怨:对象不支持属性或方法“文本”之后我也尝试过:value.html(value.innerText);对象不支持属性或方法“html”
  • 另外确认一下,我使用的是IE9。当然,我所有的 jquery 库都包括在内。
  • 这可能是因为您使用的是函数本身的值。我认为您可以使用 $('.allCaterLinks').html($('.allCaterLinks').text());因为您不需要从选择器的特定索引中获取值。
  • 显然更改为 IE9 查看器并将代码更改为 codevalue.innerHTML = value.innerText 确实有效!但仅在 IE9 视图中,IE9 以下的任何内容似乎都不会呈现图像
猜你喜欢
  • 2013-05-27
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
  • 2016-11-18
  • 2012-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多