0

ページ上の画像に問題があります。Javascriptを使用して要素を作成していますが、FireFoxでは、innerHTMLの設定に使用している文字列が正しく解析されていないようです。これは、サーバーページが無効なGET変数で要求されたときに表示されます。それらは次のようになります(PHPスクリプトのエラーハンドラーから):

GET[] = Array
(
  [shrink] => true
  [file_id] => \'   file_id   \'
  [refresh] => \'   now.getTime()   \'
)

これはリクエストの約5%でのみ発生するため、解決が困難です。私はこれをFireFoxで自分で再現することができました。Firebugは、フェッチしようとしているURLがhttps://www.domain.com/secure/%27%20+%20image_src%20+%20%であることを示します。 27

それはFireFoxでのみ発生するように見えるので、FireFoxのプリフェッチコンテンツに関連している可能性があることをどこかで読みました(現在グーグルを見つけることができません)。about:configでプリフェッチを無効にすると、問題の発生を防ぐことできますが、エンドユーザーが構成を変更する必要のない別の解決策または回避策を探しています。

詳細とコードは次のとおりです。HTMLページに空のテーブルセルがあります。ページに対するJQueryの$(document).ready()関数では、JQueryの$ .ajax()メソッドを使用して、そのセルに何を含めるべきかに関するデータをサーバーから取得しました。変数を返しfile_idます。簡単にするために、以下で設定します。次に、空のテーブルセルに、渡されるfile_idに応じて画像ファイルを提供するページを指すsrcを含む画像を設定します。コードのこの部分は元々JQueryだったので、ストレートJavascriptに変更しましたが、何の役にも立ちませんでした。

//get data about image from server
//this is actually done through JQuery's $.ajax() but you get the idea
var file_id = 12;

//create the src for the img
//the refresh is to prevent the image from being cached ever, since the page's
//javascript will be it changes
//during the course of the page's life
var now = new Date();
var image_src = 'serve_image.php?shrink=true&file_id=' + file_id + '&refresh=' + now.getTime();

//create 
document.getElementById('image_cell').innerHTML =
    '<A target="_blank" href="serve_image.php?file_id=' + file_id + '">' +
        '<IMG id=image_element src="' + image_src + '" alt="Loading...">' + 
    '</A>';`

どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

1

を変更する代わりにdocument.getElementById("image_cell").innerHTML、 <a> に ID を与えて実行してみてください

document.getElementById('a_tag_id_here').href = 'serve_image.php?file_id=' + file_id;
document.getElementById('image_element').src = image_src;

アンカー タグの ID を設定できない場合は、簡単にアクセスできる他の DOM 関数があります。ポイントは、innerHTML の変更が問題の原因だと思います。

于 2010-05-19T19:29:55.007 に答える
0

二重引用符と単一引用符が混在しているようです。あなたのコード例は変更されているので、確かではありませんが、私の推測では、次の行です。

var image_src = 'serve_image.php?shrink=true&file_id=' + file_id + '&refresh=' + now.getTime();

実際には次のように扱われています。

var image_src = "'serve_image.php?shrink=true&file_id=' + file_id + '&refresh=' + now.getTime()";

JavaScript は PHP によって生成されていますか、それとも別のファイルにありますか? JavaScript をインラインで出力する場合は、それを別の *.js ファイルに配置して、PHP の引用符の処理が JavaScript の引用符に干渉しない可能性を減らすことを検討してください。

お役に立てれば!

于 2010-05-19T16:24:04.633 に答える