JavaScript行为差异:IE11 / Edge vrs Chrome / Firefox

时间:2016-10-14 22:00:19

标签: javascript

function displayInfo(nKey) {
    var i, xdata, xfilm, xprop;
    if(!nKey) return false;
    var objFilm;
    var imgRef;
    //iterate through all object properties; display their attributes
    var jqxhr = $.getJSON('dbMovies.json', function(data) {
        $.each(data.disc, function(i, xdata) {
            if(xdata.key == nKey) {
                objFilm = xdata.film;
                imgRef = xdata.img;
                if(xdata.doc) bkDoc = true;
                return false;
            }
        });    // $.each
    })
    .done(function() {
        // objFilm has either a single film object or else an array of film objects
        var arInfo = [];
        if(!$.isArray(objFilm)) {
            var arProps = Object.keys(objFilm);....//absolutely
            arProps.forEach(function(item) {
                if(item != "ref") {
                    arInfo.push(item + ": " + objFilm[item] + "<br>");
                } else {
                    arInfo.push(item + ": <a href=" + objFilm[item] + " target=_blank>Wikipedia</a>");
                }
            });

    var w = window.open('', '', 'width = 650, height = 500, resizable');
    $(w.document.body).html(arInfo.join(""));
    })  // .done

我有一个我们称之为自助服务终端应用程序,其中包含存储在JSON文件中的电影库内容。可以通过多种方式访问​​内容,但每种方式都会显示所有相关标题。例如,用Sophia Loren搜索电影,人们会看到这样的结果: enter image description here

所有浏览器都在这一点上工作。 你可以看到每部电影都有一个链接,可以提供有关电影的某些信息。 enter image description here 虽然据报道一个浏览器(Mac Safari)没有显示维基百科链接,但所有其他浏览器都显示。但只有Microsoft浏览器(Edge,IE11)显示相关的缩略图。因此(?),只有Microsoft浏览器通过在完整版本的映像上调用我的显示引擎来响应单击。所有浏览器都能更好地响应显示引擎的更直接调用。例如,请参阅[http://www.michaelbroschat.com/LongviewChristmas/LongviewChristmas.html]。 单击第一个插图中显示的索引编号链接后,动态创建信息窗口。

所有浏览器都成功创建了新窗口和大多数信息数据项。实际上,Chrome和Firefox似乎会创建图像显示代码,但不会对其进行操作。 整个应用都可以在http://www.michaelbroschat.com/film/disccatalog.html看到 我很想知道为什么Chrome和Firefox不允许微软浏览器允许的内容。

2 个答案:

答案 0 :(得分:1)

您遗漏了问题代码的关键部分,即代码在图像引用周围创建<a>标记。

您遇到的问题是,您正在将用于电影列表的已组合HTML填充到该弹出窗口中,该窗口在没有URL引用的情况下打开。您的<img>代码是使用相对网址(例如“liners / i0001.jpg”)构建的,但由于没有基本网址供浏览器引用,因此无法加载图片。

Internet Explorer可能会做出一些推断,即弹出窗口与父窗口具有相同的基本URL,但其他浏览器显然不这样做。

答案 1 :(得分:0)

我对你的代码部分有一些理论:

............arProps.forEach(function(item) {
................if(item != "ref") {
....................arInfo.push(item + ": " + objFilm[item] + "<br>");
................} else {
....................arInfo.push(item + ": <a href=" + objFilm[item] + " target=_blank>Wikipedia</a>");
................}
............});

ONE:输出源时,请确保锚标记使用单引号或双引号,具体取决于您的偏好:

<a href="path/to/objFilm/item" target="_blank">Wikipedia</a>

我的猜测是,只有你的Safari版本存在维基百科链接的问题,它对引号很敏感。

就图像而言,输出图像路径的 img 标记在哪里?