アプリ版:「スタンプのみでお礼する」機能のリリースについて

http://oshiete1.goo.ne.jp/qa3050617.html

でtalooさんにお返事をいただき、できた~!と書いて、
質問を締め切ってしまいましたが、talooさんが書いてくださっていた

>あらかじめeventを渡す必要があります。

というのを見落としていました。ごめんなさい!! (T-T)
うう、おっちょこちょいな自分を呪います。

IEでは、教えていただいたevent.preventDefaultを
第二引数を使わずに関数の中で使う方法でも、
希望通りの動作をしてくれました。
ですが、Mozillaではやはり小ウィンドウを出した後、
元のHTMLがページトップに戻ってしまいました。
もちろんMozillaでもtalooさんのおっしゃるように、
eventを第二引数としてhtml側から渡してやればOKでした。

逆に言えば、やはりHTML側の記述に変更を加えずに済む方法はない、ということなのでしょうか・・・?
たびたびすいませんがよろしくお願いいたします。m(_ _)m

A 回答 (4件)

こんにちは



<script language="javascript">
<!--
function sWin(url) {
window.open(url,"win","width=300px,height=300px");
}
//-->
</script>

<a href="javascript:sWin('./popup.html')">link</a>

これでどうですか?
    • good
    • 0
この回答へのお礼

なるほど~。この書き方は見たことがありましたが、
実際には使ったことはありませんでした。

以前、学校でJavaScriptのコースを受講した際、
なぜ href="#" onclick="function()"のような
書き方をするかについて教わりました。
ステータスバーに別の仕掛けをしなくて済むので気に入っています。

ちなみにhref="javascript:..."と書く方法は標準仕様に照らして、
現在も今後も推奨されているものなのでしょうか?
だとすればぜひこれを採用したいと思うのですが・・・。
W3Cなど?で自分でも調べてみたいと思います。ありがとうございました!

お礼日時:2007/06/04 22:55

> 逆に言えば、やはりHTML側の記述に変更を加えずに済む方法はない、ということなのでしょうか・・・?



<a href="#" onclick="sWin('popup.html')"> という記述の条件では私にはできません。
すでに試されていると思いますが、関数の中でwindow.eventを取得出来るのはIEだけで、
それ以外のブラウザではhref=""の動作を止めることは出来ませんでした。

> ちなみにhref="javascript:..."と書く方法は標準仕様に照らして、
> 現在も今後も推奨されているものなのでしょうか?
JavaScriptが使えない環境を考慮し、推奨はされていないと思いますが、
その問題をクリア出来るなら、特に問題はないと思います。
たとえばJavaScript専用ページでJavaScriptを使えない場合を考える必要はないですしね。

参考URL:http://www.gac.jp/article/index.php?stats=questi …
    • good
    • 0
この回答へのお礼

talooさん、またまたご回答をいただき、ありがとうございます。
関数の中で“とりあえず簡単に”書く方法はなさそう、とわかってすごくスッキリしました。

まだページの公開までには時間があるので、最終的に
talooさんのeventを第二引数で渡してやるか、
leap dayさんのjavascript:方式で書くか、
はたまたreturn falseにするか
もうちょっと考えてみますね。

何度もとてもご親切に教えてくださり、ありがとうございました!

お礼日時:2007/06/09 09:43

<html>


<head>
<title>target="_blank"</title>
<script type="text/javascript">
document.onclick = target_blank;
nwp={
"width" :"auto", //ウインドウ幅 auto:ブラウザ任せ
"height" :"auto", //ウインドウ高さ auto:ブラウザ任せ
"directories":1, //ディレクトリバー 1:表示 0:非表示
"location" :1, //ロケーションバー 1:表示 0:非表示
"menubar" :1, //メニューバー 1:表示 0:非表示
"scrollbars" :1, //スクロールバー 1:表示 0:非表示
"status" :1, //ステータスバー 1:表示 0:非表示
"toolbar" :1, //ツールバー 1:表示 0:非表示
"resizable" :1 //ウインドウサイズ変更 1:可 0:不可
}

function target_blank(ev){
var ev = (ev) ? ev : event;
var el = (ev.srcElement) ? ev.srcElement : ev.target;
if(el.href){
var wo3a = '';
for(var i in nwp){
if(i == "resizable"){
wo3a += i + '=' + nwp[i];
}else if(i == "width"||i == "height"){
if(nwp[i] != "auto") wo3a += i + '=' + nwp[i] + ',';
}else{
wo3a += i + '=' + nwp[i] + ',';
}
}
var nw = window.open(el.href,"new",wo3a);
if(!nw){
alert('ポップアップがブロックされました。\n現在のウインドウにリンク先を表示します。');
window.location = el.href;
}
}
return false;
}
</script>
</head>
<body>
<a href="http://www.google.co.jp/">google</a>
<a href="http://www.yahoo.co.jp/ ">yahoo</a>
<span>aaaa</span>
</body>
</html>
    • good
    • 0
この回答へのお礼

たくさんの行のコードを書いてくださり、本当にありがとうございます。
今回の質問でも前のURLの引用ではなく、ちゃんとその全文を書くべきでした。ごめんなさい。

全てのリンクやクリックに対してではなく、指定のリンクに対してのみ、
(1) <a href="#" onclick="sWin('./file.html')">
という形で小ウィンドウを開くfunctionを起動したいのです。
ちなみにsWin()の現在の中身は、全く問題なく小ウィンドウを表示し、
最後にfocusを与えているだけのごくシンプルなものです。

そしてこの時、
(2) <a href="#" onclick="sWin('./file.html'); return false;">
と同じ動作を、sWin()に記述を加えるだけでできたら、と考えました。
それだとfunctionだけを修正し、HTMLには一切変更を加えずに済むので、
大変ありがたいな、と・・・。
素人なので、何か簡単な方法があるのかな、と思ったのですが、
どうやらそう簡単ではないようですね。(T-T)
やはり素直にreturn falseを一つ一つHTMLに書き足して行くか、
href="javascript:..."という書き方をさせていただくべきでしょうか・・・。

改めまして、return__さん、貴重なお時間をありがとうございました。m(_ _)m

お礼日時:2007/06/05 22:18

<html>


<head>
<title>???<title>
<script type="text/javascript">
<!--
function test(t){
alert(t);
return false;
}
//-->
</script>
</head>
<body>
<a href="http://okwave.jp/" onclick="return test('AAA');">aaa</a>
</body>
</html>
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
私も最初は同じ発想になりましたが、
どうやらfunctionの中でのreturn falseと
イベントハンドラの中でのreturn falseとは
意味合いが違うようで、これでは希望通りの動作にはなりませんでした。(T-T)

お礼日時:2007/06/04 23:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!