お世話になります。
prototype.jsを使って開発をしております。
Ajax.UpdaterにevalScripts: trueを設定し
request.responseTextにjavascriptが記述されたものを返しているのですが
javascriptに<(小なり)、>(大なり)があると
><に変換されてしまい、javascriptが正常に動作しません。
なければ正常に動作します。
恐らくはrequest.responseTextに返す前にPHPで
$xsl = new DomDocument();
$xsl->load("hoge.xsl");
$processor = new xsltprocessor();
$processor->importStyleSheet($xsl);
echo $processor->transformToXML($xml);
とパースをかけていることが原因だと思うのですが
何か対処法はありませんでしょうか?
どうぞよろしくお願い致します。
xslに書いてあるjavascriptの内容
<script language="javascript" type="text/javascript">
// <![CDATA[
test = function(hoge){
if(hoge > 3){
alert("over");
}
};
// ]]>
</script>
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1875880
を参考にCDATAをscriptの中に書いたり、外に書いたりと試しましたが
ダメでした。当然か。。。
<script type="text/javascript" src="./hoge.js"></script>
という風に外部ファイルとしてなら恐らく上手くいくと思うのですが・・・。
No.4ベストアンサー
- 回答日時:
実際に試していませんけど、
transformToXML の出力は文字列ですから、
echo する前に、一旦文字列変数で受けて、変換(&gt;→>とか)できないですか?
BLUEPIXY様、ご教授有難う御座います。
ただ今時間が無いので試しておりませんが
多分出来ると思います。
ただその場合、不等号だけではないということが問題です。
自分だけ、その箇所だけ、というならこの方法でも構わないのかもしれませんが・・・。
scriptタグの中だけエスケープ処理を外すのがよいのでしょうか。
ちなみに外部ファイルの宣言で上手くいきませんでした。。。
No.5
- 回答日時:
#4>scriptタグの中だけエスケープ処理を外すのがよいのでしょうか。
そうですね。それが目的ですから。
BLUEPIXY様、ご教授有難う御座います。
結果から言いますとダメでした。
transformToXMLした後にhtmlspecialchars_decodeをしましたが、&gt;のまま。
javascriptにて受け取ったreq.responseTextの&gt;をreplaceしてもダメでした。
結局Ajax.UpdaterにevalScripts: trueを設定したら
自動的にエスケープされてしまうのかなぁーと。
で、やっぱり外部ファイルとして宣言しようと思ったのですが
<script language="javascript" type="text/javascript" src="hoge.js"></script>
が読みにいってくれない。
何が原因か分かりますでしょうか?
No.3
- 回答日時:
PHPとprototype.jsについては詳しくないですが、
> echo $processor->transformToXML($xml);
で出力しているのはXMLですよね?
responseTextをeval()して利用出来るのはXMLではなくJavaScriptだけですから、
> echo $processor->transformToXML($xml);
の部分を削除して、
Content-type: text/plain
または
Content-type: application/x-javascript
などのコンテントヘッダを出して、
echo "test = function(hoge){";
echo "if(hoge > 3){";
echo "alert("over");";
echo "}";
echo "};";
としないといけないと思いますが、そういうことではないのでしょうか?
はずしてたらすみません。
talooさん、ご教授有難う御座います。
すみません。説明不足でした。
XML+XSLTでXSLTの中にjavascriptを記述しています。
No.2
- 回答日時:
No.1です。
No.1は間違っていました。もし,Math.log()を使うのであれば,対数関数への引数が負の時のほかに,引数が1になるとき(hoge==2のとき)の処理も追加してください。すみませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javascriptの関数につきまして
-
【JavaScript】ソースのコメン...
-
六曜カレンダー
-
javascriptでexcel閉じる
-
文字認証の問題
-
VBAによる第3、4水準文字の判定...
-
Excel VBA カタカナ セル判定...
-
エクセル 半角英数6文字以上 ...
-
jsでカスタマイズされたフォー...
-
既存のwebサイトで、ローカルの...
-
VBA 図形を塗りつぶし無しにす...
-
VB.NET2003 テキストボックスに...
-
JavaScriptでショートカットキ...
-
初心者です。gulpでコンパイル...
-
JavaScriptで掲示板
-
jQuery ui Datepicker 明日以降...
-
javascriptでJSONを取得する方法
-
Webページの文字サイズ変更ボタ...
-
JSPの処理の途中で、JavaScript...
-
ASPによるEXCELファイルの操作
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WebページまたはHTMLソースから...
-
【JavaScript】ソースのコメン...
-
WSH をC#で作ることは可能でし...
-
シェルスクリプト
-
Unityでジャンプ機能を実装した...
-
javascriptでexcel閉じる
-
変換テーブルを使った、文字列...
-
javascriptで日付を加算して表...
-
文字列圧縮_
-
リアルタイム時計をミリ秒まで...
-
六曜カレンダー
-
コメント削除/圧縮/難読化
-
Ajax.Updaterでjavascriptを記...
-
リロードしないと正常に表示さ...
-
Javascriptで特殊文字を置換す...
-
JSPの処理の途中で、JavaScript...
-
VB.NET2003 テキストボックスに...
-
gas 全角数字を半角数字に変換
-
初心者です。gulpでコンパイル...
-
if(1){...}とはどういうことで...
おすすめ情報