ボタンを押したらjQueryが使えるページを新規で開くように以下のようなソースを書いてみました。
-----------------------------------------------------------------------------------------
<input type="button" value="test" onclick="test()" />
<script type="text/javascript">
function test(){
var newWindow=window.open();
newWindow.document.open();
newWindow.document.writeln('<p>test</p>');
newWindow.document.writeln('<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"><\/ …
newWindow.document.writeln('<p>test</p>');
newWindow.document.writeln('<p>test</p>');
newWindow.document.writeln('<p>test</p>');
newWindow.document.close();
}
</script>
-----------------------------------------------------------------------------------------
ところが、これだとOperaではうまくいきません。
「要素を検証」してみたところ、</script>以下がwritelnされていないようです。
src="~" の~部分を消してみると以下はきちんと書き込まれるのですが、それだとjsファイルを読み込むことができません。
</script>以外にもエスケープさせねばいけない所があるのでしょうか?
それとも原因は他にあるのでしょうか?
教えていただければありがたく思います。
よろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
なぜエスケープ?
newWindow.document.writeln('<script ・・・・><'+'/script>');
のようにタグを分割するだけでよいかも
回答ありがとうございます。
wite(ln)の中に</script>を書くと、その外側の<script>が閉じられてしまうので、
対応法として、おっしゃる通りタグを分けるのと、「</」を「<\/」とエスケープにする2通りがあります。
で、いろいろ検証してみたところ、私のOperaはver11.60で、そのどちらの方法もうまくいきませんでした(src=""がなければ大丈夫ですが、、、)
ところが、ver11.51ではうまくいきました。
Operaのバグかもしれません。
どうなんでしょう?
No.2
- 回答日時:
XHTMLなら <>& をエスケープする必要がありますが、document.write を使っているので関係なさそうですね。
document.write(['\x3Cp\x3Etest\x3C/p\x3E',
'\x3Cscript type="text/javascript" src="jquery-latest.min.js"\x3E\x3C/script\x3E',
'\x3Cp\x3Etest\x3C/p\x3E',
'\x3Cp\x3Etest\x3C/p\x3E',
'\x3Cp\x3Etest\x3C/p\x3E'].join(''));
> ところが、これだとOperaではうまくいきません。
そもそも、window.open() が働いていないように見受けられます。(Opera 11.60で確認)
http://jsfiddle.net/GBBdD/
window.open は引数なしで呼び出せる仕様ですが、Opera は準拠してないようですね。引数を指定してみてください。
http://www.whatwg.org/specs/web-apps/current-wor …
> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"><\/ …
http://code.jquery.com/jquery-latest.min.js を読むということは最新の jquery.js 仕様に準拠するよう常に気を配る必要がありますが、大丈夫でしょうか?
予期せぬ更新で既存のスクリプトが動かなくなるリスクがありますが…。
ありがとうございます!
jQueryのバージョンは、サンプルなので、気にしないでください(^^;
>window.open は引数なしで呼び出せる仕様ですが、Opera は準拠してない
んですか。それは知りませんでした。ありがとうございます。
No.3
- 回答日時:
#2 です。
ポップアップブロックの可能性も考えましたが、やはり Opera 11.60 では動作しないようですね。
http://jsfiddle.net/GBBdD/1/
第二引数まで指定してやれば Opera 11.60 でも動作しました。
http://jsfiddle.net/GBBdD/2/
ただし、アドレスバーの表示がおかしい。
"about:blank" であるべきなのに "http://fiddle.jshell.net/GBBdD/2/show/" と表示されています。
何なんでしょうね…。
ありがとうございます!
>第二引数まで指定してやれば Opera 11.60 でも動作しました。
>http://jsfiddle.net/GBBdD/2/
確かに動きました!ありがとうございます。
それにしても、またバージョンアップで変わりそうな気がしますが、、、(^^;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript プラグイン無しでContactform7にdatepickerを実装 3 2022/10/25 02:18
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CGIフォーム一定時間過ぎる...
-
こんにちは、23歳、事務系のOL...
-
HPビルダーで『最終更新日時』...
-
読み込むたびに画像を順番に表...
-
ページ内文字列の置換について
-
特定のURLからの訪問者を入室禁...
-
<a href="#" …>の意味を教えて...
-
別ファイルのfunctionの読み込み方
-
JavaScriptからVBScriptの呼び...
-
<script>...</script> 要素の内
-
GIFアニメの動きが止まってしま...
-
相対パスと絶対パスの速度
-
SCRIPT5007: 未定義または NULL...
-
bodyにidをつける理由は何ですか?
-
javascript外部読み込みの際の引数
-
cssにjavascriptを入れる?呼び...
-
ホームページ上に『位置固定』...
-
pythonのWebスクレイピングでfi...
-
html メールリンクにて自動ファ...
-
Safariで<iframe>のinnerHTMLを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
¥マークの検索について
-
CGIフォーム一定時間過ぎる...
-
document.getElementById
-
javascriptで変数を組み込みたい
-
location.hrefが動かない・・・
-
明日の日にちを表示するときは
-
ページ内文字列の置換について
-
JavaScriptの入れ子
-
1から100までの平方根を表示す...
-
カウントダウンとカウントアッ...
-
JSによるリンク先の値の取得
-
特定のURLからの訪問者を入室禁...
-
IEでiframe内のcookieを保持
-
16進n桁の文字列変換の方法は?
-
ブラウザを閉じないようにする...
-
promptを使用した年齢認証
-
<a href="#" …>の意味を教えて...
-
bodyにidをつける理由は何ですか?
-
別ファイルのfunctionの読み込み方
-
getElementsByNameで要素が取得...
おすすめ情報