![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
はじめまして!JavaScriptで質問があります。
JavaScriptで質問があります。
以下のようなwindowを生成し、HTMLを出力するJavaScriptコードをJSファイルとして登録し、
<script type="text/javascript" src="..."></script>
で参照しています。
JSファイル内の[[ここに改行コード]]はSSIファイルを読み込んでいます。
SSIファイルの内容は改行コード、"(ダブルクォーテーション)を含んでいます。
この場合win.document.write(に続く'(シングルクォーテーション)で囲った文字列が改行してしまうので、
JavaScriptエラーとなってしまいます。
このエラーを解決できる手段はないでしょうか。
↓JSファイル
----------------------------------
function windowOpen() {
var win;
win = window.open();
win.document.write('<html><head><title>title</title></head><body>[[ここに改行コード]]</body></html>');
}
----------------------------------
function内で以下のようにコメントを出力し、windowOpenの関数のコードを読み取ることができれば、
windowOpenCommentStart~windowOpenCommentEndまでの文字を切り取り、変数に代入することができる
のですが、関数のコードを取得することなんてできませんよね。。
----------------------------------
function windowOpen() {
/* windowOpenCommentStart
[[ここに改行コード]]
windowOpenCommentEnd */
var win;
win = window.open();
win.document.write('<html><head><title>title</title></head><body>' +
[[ここに改行コードを変数化]] +
'</body></html>');
}
----------------------------------
JSファイル内に[[ここに改行コード]]を出力することが条件ですが、
どんな方法でもよいので実現する方法はないでしょうか。
環境:WindowsXP
ブラウザ:IE6,FireFox2
No.1ベストアンサー
- 回答日時:
> 関数のコードを取得することなんてできませんよね。
。関数のtoStringメソッドを使えばいちおう取得できます。
ただし、IEならコメントも取得できるのですが、
FirefoxやOperaではコメント部分が取得できないため、
この方法では実現できません・・・。(改行や空白も消える。)
いちおう、提示されている案を実現しようとすると以下のようになります。
--------------------------------------
<html>
<head>
<script>
function srcFromSSI(){
/* windowOpenCommentStart
AAAAAAA
AAAAAAA
AAAAAAA
windowOpenCommentEnd */
}
function windowOpen() {
var win;
win = window.open();
var funcSrc = srcFromSSI.toString();
var match = funcSrc.match(/windowOpenCommentStart((?:.*?\r\n)*?.*?)windowOpenCommentEnd/);
var src = (match != null) ? match[1] : "";
win.document.write('<html><head><title>title</title></head><body>' +
src +
'</body></html>');
}
</script>
</head>
<body>
<button onclick="windowOpen();">TEST</button>
</body>
</html>
----------------------------------------
TESTボタンを押すとIEならサブウィンドウに文字が表示されます。が、FirefoxやOperaはダメでした><;
もう少し考えてみます。
確認なのですが、SSIはJSファイル内であることが前提ですか?(HTML側でOKなら楽なのですが・・・。)
この回答への補足
ありがとうございます!toString()ですかなるほど。
>FirefoxやOperaはダメでした><;
残念です。もう少しなんですが。。
>確認なのですが、SSIはJSファイル内であることが前提ですか?(HTML側でOKなら楽なのですが・・・。)
そうですよね。それなら楽なんですけどね
JSファイル内であることが前提です。
お礼にするの忘れてました
ありがとうございます!toString()ですかなるほど。
>FirefoxやOperaはダメでした><;
残念です。もう少しなんですが。。
>確認なのですが、SSIはJSファイル内であることが前提ですか?(HTML側でOKなら楽なのですが・・・。)
そうですよね。それなら楽なんですけどね
JSファイル内であることが前提です。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_15.png?e8efa67)
No.3
- 回答日時:
JSファイル内への出力が前提ならば「SSIファイルの内容」をその前提に合わせて書き換えるしかないと思います。
そのSSIが単純includeではなくプログラム出力されているならば、SSI側プログラムで改行コードや引用符を置き換えればいいだけですけど。
#execが使えるSSIならば、置き換え用プログラムを間に挟めばよいでしょう。
単純includeしか使えないならば、読込対象ファイルの方を先に書き換えるしかないです。
そうですよね。おっしゃるとおりだと思います。
これはSSIファイルの内容をJavaScriptで読み込む前提として作成するようにします。
ありがとうございます。
No.2
- 回答日時:
よくわかりませんが、
document.write('\n');
とか
document.write('<br>');
ではだめですか?
この回答への補足
回答ありがとうございます。
外部ファイルの内容をシングルクォーテーションで囲った箇所に当てはめるので、そのままではエラーとなってしまいます。
document.write('[[外部ファイル]]');
↓
document.write('あいうえお
かきくけこ
さしすせそ');
この場合改行コードがそのままJavaScriptのコードに埋め込まれてしまうので、エラーとなるんです。(;;)
もうあきらめようかな。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
function の return 値を表示し...
-
ひとつのHTMLファイル内にcanva...
-
フォーカス移動抑止について
-
【jquery】EasyUIのSubGridにMy...
-
日数カウントダウンをホームペ...
-
キーを押している間の時間を計...
-
Javascript でText file の書き...
-
SCRIPT5007: 未定義または NULL...
-
JavaScriptでiframeの内容を「...
-
htaでVBSのソースを書いたらエ...
-
idHOGEで取得したinnerText(数...
-
二つの関数を一つにまとめるこ...
-
onkeydownの連続?
-
リアルタイムに時計を表示する...
-
テロップを作りたい:JavaScrip...
-
designMode=on のときのキーイ...
-
getElementsByNameで要素が取得...
-
<a href="#" …>の意味を教えて...
-
<div>のタッチ状態を維持したま...
-
bodyにidをつける理由は何ですか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
getElementsByNameで要素が取得...
-
JavaScriptでiframeの内容を「...
-
function の return 値を表示し...
-
SCRIPT5007: 未定義または NULL...
-
ボタンのID名を取得するには?
-
JavaScript でキーを送る
-
フォーカス移動抑止について
-
乱数を一定時間毎に表示させた...
-
ボタンを押してテキストエリア...
-
bodyタグのfocus
-
JavaScriptでのEnterキーとAlt+...
-
自動ジャンプでフォームデータ...
-
一定時間画像を表示させ、その...
-
リンク移動先のURLを取得
-
idHOGEで取得したinnerText(数...
-
「オブジェクトを指定してくだ...
-
html javascript 作った配列を...
-
キーを押している間の時間を計...
-
チェックボックスの選択パター...
-
Operaでのobjectタブの高さ変更
おすすめ情報