2016-10-14 16 views
-2
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ファイルに保存されている私のフィルムライブラリのコンテンツを含むキオスクアプリと呼ばれるものがあります。 1つはいくつかの方法でコンテンツにアクセスできますが、それぞれは関連するすべてのタイトルの表示を生成します。たとえば、Sophia Lorenで映画を検索すると、次の結果が表示されます。 enter image description hereJavaScriptの動作の相違点:IE11/Edge vrs Chrome/Firefox

すべてのブラウザがこの時点で動作します。 各映画には、映画に関する特定の情報につながるリンクがあります。 enter image description here 1つのブラウザ(Mac Safari)は、Wikipediaリンクを表示していないと言われていますが、他のすべてのブラウザがそうです。しかし、Microsoftのブラウザ(Edge、IE11)のみが関連サムネイルを表示します。したがって、(?)では、フルバージョンの画像で自分のディスプレイエンジンを呼び出すことによって、Microsoftのブラウザだけがクリックに反応します。すべてのブラウザは、ディスプレイエンジンをより直接的に呼び出すと、同様に適切に応答します。例えば、[http://www.michaelbroschat.com/LongviewChristmas/LongviewChristmas.html]を参照してください。 情報ウィンドウは、最初の図に示すインデックス番号リンクをクリックすると動的に作成されます。

すべてのブラウザは、新しいウィンドウと情報データ項目のほとんどを正常に作成します。実際、ChromeとFirefoxは画像表示コードを作成するように見えますが、そのコードには対応していません。 アプリ全体が表示されますhttp://www.michaelbroschat.com/film/disccatalog.html ChromeとFirefoxがMicrosoftのブラウザで許可しているものを許可しない理由を知りたいと思います。

+3

スペースを '.'で置き換えたのはなぜですか? – Oriol

+0

Firefoxのブラウザコンソールでエラーが発生します。あなたはそれを調査しましたか? – Pointy

+0

私は、各フィルムスタンザの後に画像のサムネイルを追加しようとするコードは全く見ません。 – Pointy

答えて

1

画像参照の周囲に<a>というタグを作成するコードである、コードの重要な部分を質問から外しました。

あなたが持っている問題は、URLリストなしで開いているそのポップアップウィンドウにフィルムリストのための組み立てられたHTMLを詰め込んでいることです。 <img>タグは、相対URL(「liners/i0001.jpg」など)で作成されますが、画像を参照するブラウザのベースURLはロードできません。

Internet Explorerは、ポップアップウィンドウが親と同じベースURLを持っていることを推測しているかもしれませんが、他のブラウザは明らかにそうしていません。

+0

ありがとうございます。私はあなたの反応を研究します。 –

+0

これは、同じような場合に使用する必要があるより多くのURL仕様を必要としましたが、URLを埋めることによって、すべて動作するように見えます。私のHREF/IMG仕様には2つのレベルがあります。まず、サムネイルの指定です。それはIMG仕様で処理されます。次に、私のディスプレイエンジンへの呼び出しです。ディスプレイエンジンは、表示されるターゲットイメージも指定する必要があります。 ありがとう! –

+0

(続き)ここで私は(オリジナルを含む)となりました:// \t arInfo.push( "
"); arInfo.push( "
"); –

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> 

私の推測では、あなたのサファリのバージョンだけが引用符に敏感なWikipediaリンクに問題があると思います。

画像が移動する限り、imgタグは画像パスを出力する場所はどこですか?

+0

ありがとうございました。これらの2つの答えは私に多くの仕事を提供します。 –

+0

私のPointyへの答えを見てください。しかし、一般的に、HTML5はHREF参照の内容を必要としません。私の経験によれば、スペースキャラクター以上のものがその要件を強制することができます。 –