0

ログに奇妙なエラーが記録されています。ほとんどの場合、Macintosh の Chrome から発生していますが、Windows から発生することもあります。

私がページに持っているjavascriptで:

text =+ '<img src="/pictures/' + url + '" alt="Photos" border="0" class="carousel-photo" />';

次に、カルーセルを使用してテキストを追加すると、すべてのブラウザで(残念ながらクロムでこれをデバッグできません)、画像が生成されます。

<img src="/pictures/2405.jpg" alt="photos" border="0" class="carousel-photo">

しかし、私のログには次のことが記録されています。

http://www.mysite.net:80/pictures/' + url + '

もちろん、これは存在しないため 404 エラーであり、ログを取得します。

しかし、この例では 2405.jpg という可変コンテンツに URL が変換されないのはなぜですか?

更新 1: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.57.2 (KHTML、Gecko など) Version/5.1.7 から別の行 (pandavenger のアドバイス) を追加してみました。サファリ/534.57.2

エラー 404:

/pictures/';text += url;text +='

更新 2 CDATA に入れても役に立ちませんでした (xhtml ページがあります)。一部の Apple ブラウザーは、これが HTML であるかのように解釈しています :-(

更新 3

これは変です。これを止めることができる唯一の方法は、次を使用することです。

txt += "<img src='\/pictures\/" + elm.find('url').text()+ "' alt='Photo' border='0' class='carousel-picture'>";

それ以外の

var url = '\/pictures\/' + elm.find('url').text();
txt += "<img src='" + url  +  "' alt='Photo' border='0' class='carousel-picture'>";

更新 4 : 他のページでは、img を構築する同様のコードもこのブラウザーで失敗します。唯一の方法は、document.createElement("img") を作成するようです。しかし、たとえば、画像が 404 見つかりませんが、リンクが見つからないため、このブラウザーで他のことが問題ないのだろうかと思います。CDATA も役に立ちません。

4

3 に答える 3

1

おそらく、ブラウザはこの JavaScript 部分を html として解釈し、次のように検出します。

<img src="/pictures/' + url + '" alt="Photos" border="0" class="carousel-photo" />

ここで、src 属性の値は次のとおりです。

/pictures/' + URL + '

解決策については、こちらを参照してください: script タグ内で CDATA セクションが必要になるのはいつですか?

CDATA 部分を追加すると、これらの問題が修正されるはずです

于 2012-05-24T11:41:31.930 に答える
0

これは、ブラウザがcertianインスタンスで属性を引用符なしで処理する必要があるという仕様と、スラッシュ(solidus)文字がまれな状況での検証処理を混乱させるという事実が原因である可能性があります。これは、「テキスト」が一部の要素の有効な属性であるため、変数名としての「テキスト」の選択が不適切な場合にも悪化する可能性があります。貢献する可能性のある終了セミコロンがないことに注意してください。

var fullurl = '/pictures/' + url;
mytext = mytext + '<img src="' + fullurl + '" alt="Photos" border="0" class="carousel-photo" />';

1つの代替方法は、オプションのクロージングソリドゥスも削除することです。

var fullurl = '/pictures/' + url;
mytext = mytext + '<img src="' + fullurl + '" alt="Photos" border="0" class="carousel-photo">'

さらに、画像がフロー内に挿入された後にsrc属性を設定する方がよい場合があります。

var fullurl = '/pictures/' + url;
mytext = mytext + '<img src="" alt="Photos" border="0" class="carousel-photo" />';

..挿入後、fullurluriコンポーネント文字列を使用してsrc属性を設定します。注:これはuriであり、src属性のコンテンツとして指定されたURLではありません。

もう1つは、一重引用符/二重引用符の使用を逆にすることです。

var fullurl = "/pictures/" + url;
mytext = mytext + "<img src='" + fullurl + "' alt='Photos' border='0' class='carousel-photo'>";

特別な注意点として、この画像文字列を「q」要素またはブロック引用符内で使用しないでください。

于 2012-05-24T12:41:12.683 に答える
0

使ってみて

console.log(text);

デバッグします。これにより、テキストに渡されたものがエラー ログに表示されます。試す:

text += '<img src="/pictures/';
text += url;
text += '" alt="Photos" border="0" class="carousel-photo" />';

そのため、URL は文字列ではなく変数として渡されます...

于 2012-05-24T11:45:53.513 に答える