私のプログラミング スキルはせいぜい初歩的なものなので、これらのことについて話すのが少しぎこちなく聞こえるかもしれませんが、ご容赦ください。私は学んでいますが、チンパンジーのペースで。
私の問題は次のとおりです。JQuery Mobile を使用して、フォームのコンテンツを ajax 経由のダイアログとして取り込みます。このコンテンツは、data-role="page" 属性を持つ 2 番目の div のドキュメント自体に含まれています。
その 2 ページ目の div 内に、いくつかの変数を定義する JavaScript があり、それらを document.write() でドキュメントに書き込みます。
ただし、リンク (ナビゲーションの右端のリンク) をクリックすると、素敵なダイアログがポップアップ表示される代わりに、Firefox は最初の変数を含む新しいページを (動的ではなく静的ページとして) 一時的にロードし、次にリダイレクトしますブラウザの履歴に「wyciwyg(00000)...」を残して、開始ページ。このリダイレクト時に、ブラウザのタイトル バーに「WYCIWYG」が表示されます。他のブラウザーは、わずかに異なる方法でチョークします (Safari はリダイレクトせず、Chrome はすべての変数を表示し、リダイレクトしません、など)。document.write コマンドを削除すると、リンクは期待どおりに動作します。
私は何時間も Web を探し回りましたが、答えが見つかりませんでした... 同様の問題が 10 年前の Mozilla バグレポートに表示されますが、他にはあまりありません。私が見つけた唯一の解決策は、ajax 経由で読み込まれたコンテンツで document.write() を使用しないことです。残念ながら、代替手段が何であるか、またはそれをどのように実行し始めるかさえわかりません. Javascript コードは Google で作成されたもので、トランジット旅行プランナーのフロントエンド コードです。
以下は、この問題を示す簡略化されたコードです。チンパンジーのペース全体を念頭に置いて、ガイダンスをいただければ幸いです。前もって感謝します。
<!DOCTYPE HTML>
<html>
<head>
<title>WYCIWYG</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.1/jquery.mobile.structure-1.2.1.min.css" />
<script type='text/javascript' src='http://code.jquery.com/jquery-1.7.1.js'></script>
<link rel="stylesheet" type="text/css" href="http://code.jquery.com/mobile/1.2.1/jquery.mobile-1.2.1.min.css">
<script type='text/javascript' src="http://code.jquery.com/mobile/1.2.1/jquery.mobile-1.2.1.min.js"></script>
<script>
var startExample = "USC";
var endExample = "201 N Los Angeles St.";
var zip = "90012";
</script>
</head>
<body>
<div data-role="page">
<div data-role="navbar">
<ul data-mini="true">
<li><a href="#mNavDash" data-prefetch="true" id="dashLink">Service 1</a></li>
<li><a href="#mNavCE" data-prefetch="true" id="ceLink">Service 2</a></li>
<li><a href="#planTrip" id="planTripLink" data-rel="dialog">PLAN TRIP</a></li>
</ul>
</div>
</div>
<div data-role="page" id="planTrip">
Some document.write js:
<script>
document.write(startExample);
document.write(endExample);
document.write(zip);
</script>
</div>
</body>