Javascript 置換について
■■Javascript 置換について■■
Javascriptでイベント属性のみを置換することは可能でしょうか?
【やりたいこと】
htmlソースの
「onmouseover」を「onClick」に置換したい。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>sanmple</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS">
<link rel="stylesheet" type="text/css" href="../../../css/left.css">
<script src="../../../../JS/jquery.js" type="text/javascript"></script>
<script src="../../../../JS/jquery.cookie.js"
type="text/javascript"></script>
</head>
<body>
<map name="ima">
<area shape="rect" coords="10,20,82,156" onmouseover="POP('ここに表示さ
せる文章がはいってます')" onmouseout="return NNN()">
<area shape="rect" coords="10,30,100,200" onmouseover="POP('いいいいいい
いいいいいいいい')" onmouseout="return NNN()">
</map>
</body>
</html>
上記のような個別ページが1000ページくらいあります。
ある場所を「onmouseover」したら、POPという関数で説明文が表示される動きを
しています。
POPという関数は、
インデックスページに【表示方法1ボタン】【表示方法2ボタン】があり、
押したボタンによって個別ページの表示方法を変更させるために関数を振り分けている。
(インデックスページでフラグをたてる処理をしている。)
function POP(obj){
var text =$.cookie('flag');
//表示方法1
if ( text == "n"){
over(obj);
}
//表示方法2
else if( text == "k"){
top(obj);
}
else {
return false;
}
}
というような動きをしていますが、
今回 「//表示方法2」の時に、イベントハンドラを
「onmouseover」から「onClick」に変更したい。
POP関数部分はそのままにしたい。
↓
POP('ここに説明文がはいってます')
引数は文章が入っているのでJSに移動したくない。
イメージはこんな感じです。
個別ページを読み込んだとき
$(document).ready(function(){
【表示方法2ボタン】のフラグだったら
area の onmouseover を onClick に変更
});
なにか簡単な置換方法はありませんでしょうか?
replaceで置換できませんでした。(string部分じゃないから?)
document.body.innerHTML=document.body.innerHTML.replace(onmouseover,onclick);
何かご存じの方がいらっしゃいましたら、教えて頂けないでしょうか。
よろしくお願い致します。
お礼
回答ありがとうございます。 その後の経過ですが、<head>内に記述していた<script・・・(外部フアイルの読込み)>を<body>内の最後に移動したことで解決できたようです。 通常のプログラミングだと、変数などは先に定義しておかないとアンデファになるので、<body>内の最後に移動したら、未定義になるんじゃないかと思ったし、<body>内に<script>の外部ファイル読込みを記述していいの? じゃあどう記述するの? という疑問があって解決できませんでした。 で、いろいろサイトを検索したところ記述例が載っていたので、それを試したところ、特に他の問題もなく、自分の環境では試せなかったのですが(再現しないので)、 結合試験でも発生しなくなりました。 今回の現象は社内LAN環境のレスポンスの遅延?!も影響しているように思いました。 JavaScriptの読込みでタイムアウトがあるかどうかは???ですが。 納品間近で、かなり焦りましたがとりあえず間に合ったようです。 askaaskaさん、アドバイス有難うございました!
補足
うまく書けなくてすみません。 #対象となる画面は #・外部のJavaScriptファイルを呼び出している #・画面内のtype=buttonがonClickイベントで外部JavaScriptファイル内に定義している関数を呼んでいる #ってことでいいの? そのとおりです。 #・最新表示の処理ってCtrl+RとかF5とかの処理のこと? いいえ、作成したcgiアプリの処理になります。 onClickイベントで外部JavaScriptファイル内に定義している関数(*)で、 「表示処理」を識別できる値などをhiddenに設定してsubmit()しています。(POST) (*)→この関数が定義されていないとなってしまいます。 #・n時間放置している人はその間いっさいブラウザ操作していない?それともいろいろしている? 何も操作していません。画面を表示させたまま、放置しっぱなしです。 #・ブラウザ操作していなくてもブラウザキャッシュが削除されるようなことをしている? 何もしていないそうです。(そのパソコンを触っていない) #・エラーが起きたとき、ブラウザの一時キャッシュにその外部JavaScriptファイルが存在している? キャッシュはされていると思うのですが、 一時キャッシュの存在確認はどうすればいいのでしょうか? この事象が起こるのも全ての端末ではなく、 当然、私の試験した端末では発生したことがありません。(今までの5年間の間にも) ローカル環境だと発生しません。 発生するのはイントラネットの社内LAN環境のクライアントのようです。 よくわからないのですが、 あれからも試験を続けている中、エラーになるまでの時間が日々、長くなってきています。 今日は2時間大丈夫でした...とか、 こっちのパソコンでは出なくなりましたね...とか。 (最初は、ずっとその処理をする試験で、15分おきに発生する・・・と言われました) ???です。 これで伝わるか不安ですが よろしくお願いします。