+ JavaScript の質問用スレッド vol.65 +at HP
+ JavaScript の質問用スレッド vol.65 + - 暇つぶし2ch557:Name_Not_Found
08/06/27 15:55:04
>>556
そのサンプル書いてみて。

558:Name_Not_Found
08/06/27 15:55:53
>>556
できたらサンプル見せてもらえませんか

559:Name_Not_Found
08/06/27 15:56:55
>>557
書けたら質問しないだろ

560:556
08/06/27 16:00:19 iNHOA/2z
<html>
<head>
<script type="text/javascript">
function method1() {
if (confirm("method2を阻止する?")) {
// ここでmethod2の実行を阻止したい。
} else {
;
}
}
function method2() {
alert("method2.");
}
window.onload = function () {
document.getElementById("buttonId").attachEvent("onclick", method2);
document.getElementById("buttonId").attachEvent("onclick", method1);
}
</script>
</head>
<body>
<form>
<input type="button" value="button" id="buttonId">
</form>
</body>
</html>

561:Name_Not_Found
08/06/27 16:06:03
>>557-558
なんなのこいつら
日本語も読めない奴は回線切って首吊れよ

562:Name_Not_Found
08/06/27 16:13:33
何故2つ割り当てるのか分からない

563:Name_Not_Found
08/06/27 16:22:11
>>561
どこまで書けるかってのを知りたかったんじゃないのか

564:Name_Not_Found
08/06/27 16:30:33
>>563
それを知って何になる?

565:Name_Not_Found
08/06/27 17:19:26
IE専なんて試す気にもならないけどこんなところか
function Util(id, type) {
  this.obj = typeof id == 'string' ? document.getElementById(id) : id;
  if (this.obj) throw 'ハァ(゚д゚)?';
  if (!type) throw 'ハァ(゚д゚)??';
  this.work = [];
  this.obj.attachEvent(type, (function(x) {
    var a = x.work;
    for (var i = 0, current; current = a[i]; i++) {
      if (a[i].call(x.obj)) return;
    }
  })(this));
}
Util.prototype = {
  attach: function(listener, index) {
    if (isNaN(index = Number(index))) return this.work.splice(index, 0, listener);
    if (typeof listener != 'function') return false;
    return this.work.push(listener);
  },
  detach: function(listener) {
    if (typeof listener != 'function') return false;
    var i = this.work.indexOf(listener);
    if (i < 0) return false;
    this.work.splice(i, 1);
    return true;
  }
};


566:Name_Not_Found
08/06/27 17:19:46
var hogeClick = new Util('hoge', 'onclick');
で hoge のクリックを管理するオブジェクトができる

hogeClick.attach(function() {
  return !confirm('バカなの?死ぬの?'); // false を返すとこれより後をキャンセル
})
hogeClick.attach(function() {
  alert('そうかい');
})

567:Name_Not_Found
08/06/27 17:23:45
見直してたら間違いがあった
9行目
if (a[i].call(x.obj)) return; → if (!a[i].call(x.obj)) break;

568:556
08/06/27 18:00:25 iNHOA/2z
動かしてみて試させていただきました。

> if (this.obj) throw 'ハァ(゚д゚)?';

if (!this.obj) throw 'ハァ(゚д゚)?';
に直したんですがこれでよいのですか?

> for (var i = 0, current; current = a[i]; i++) {
> if (!a[i].call(x.obj)) break;
> }
この辺りで、「種類が一致しません」とエラーがでました。
どうやったらエラーを取り除けるのかわかりませんでした。

569:Name_Not_Found
08/06/27 18:35:02
>>568
あまりにも酷いから書きなおしますごめんなさいごめ(ry

570:Name_Not_Found
08/06/27 18:44:33
>>561

|>>557-558
|なんなのこいつら
|日本語も読めない奴は回線切って首吊れよ

ってあんた「なんなの」って部分をちゃんとした日本語で説
明してみなよ。拝見するから。結果によっては、てめえで説
明もできねえようなら、人の批評をするなボケって話だろ。

571:Name_Not_Found
08/06/27 18:47:46
>>568
これで動いた。type から on は削っといた
function Util(id, type) {
  this.obj = typeof id == 'string' ? document.getElementById(id) : id;
  if (!this.obj) throw 'ハァ(゚д゚)?';
  if (typeof type != 'string') throw 'ハァ(゚д゚)??';
  this.work = [];
  this.obj.attachEvent('on' + type, (function(x) {
    return function() {
      var a = x.work;
      for (var i = 0, current; current = a[i]; i++) {
        if (!current.call(x.obj)) break;
      }
    };
  })(this));
}


572:Name_Not_Found
08/06/27 18:48:59
Util.prototype = {
  attach: function(listener, index) {
    if (typeof listener != 'function') return false;
    if (!isNaN(index = Number(index))) {
      this.work.splice(index, 0, listener);
      return index;
    }
    return this.work.push(listener);
  },
  detach: function(listener) {
    if (typeof listener != 'function') return false;
    var i = this.work.indexOf(listener);
    if (i < 0) return false;
    this.work.splice(i, 1);
    return true;
  }
};
function init() {
  var hogeClick = new Util('hoge', 'click');
  hogeClick.attach(function() {
    return !confirm('バカなの?死ぬの?');
  });
  hogeClick.attach(function() {
    alert('そうかい');
  });
}

>>570
結局お前はなんの役にも立ってないだろ
無駄なレスすんな

573:Name_Not_Found
08/06/27 18:50:09
おいおい笑とけ笑とけ

574:Name_Not_Found
08/06/27 20:48:19
バブルするイベントタイプは、アホ外人が言うイベントデリゲーションを使え。

575:556
08/06/27 21:16:39 iNHOA/2z
>> 571
動作確認しました
ちゃんとキャンセルできました
まさにこの動きを探してたんです
自分でイベントの管理をするのですね
まだ私にはレベルの高い事だったので、とても勉強になりました
ありがとうございます

576:551
08/06/27 22:29:54
>>552 >>553
thanx!

577:Name_Not_Found
08/06/28 04:25:12
ある程度時間をおいてもう一度自分のコードを読むと、少し気持ちわるいとこが見つかるよな

if (!current.call(x.obj)) break; → if (current.call(x.obj) === false) break;

attach: function(listener, index) {
  if (typeof listener != 'function') return false;
  if (isNaN(index = Number(index))) return this.work.push(listener);
  this.work.splice(index, 0, listener);
  return index;
},


578:Name_Not_Found
08/06/28 13:13:03 Xx7cgI9V
name="pic[0]"を指定してるアップロードフィールドがあって、そこに入力した中身を
空欄にするスクリプトを書いています(フィールドは"pic[9]"まで10個あります)

function clearUploadField(n){
uploadPic = "pic[" + n + "]";
//alert(n);
document.mujintouForm.elements[uploadPic].value = "";
}
これに対して onClick="javascript:clearUploadField(0)"とすると、
alertで0がただしく表示されるのに、IE6でフィールドがクリアされません
firefoxとsafariではクリアされます
どこに問題があるでしょうか? スクリプトエラーも表示しない状況です。
どなたかご意見よろしくお願いします

579:Name_Not_Found
08/06/28 13:41:18
◆◆◆◆◆◆◆◆◆毎日新聞社による日本人への誹謗中傷◆◆◆◆◆◆◆◆◆

・母親は受験勉強をする息子の学力向上のためにフェラチオをする
・日本人女性の55%は、出会ったその日に男と寝る
・ファストフードは女子高生たちを性的狂乱状態におとしいれる
・ティーンたちはバイアグラを使ってウサギのようにセックスをする
・女子高生は、刺激のためにノーブラ・ノーパンになる
・日本の最新の流行 : 70歳の売春婦
・老人の売春婦の人気にもかかわらず、日本では小学生の売春婦にも仕事がある
・日本の若い看護婦は売春婦に勝る
・24時間オルガズムが止まらない病気で苦しむ日本人女性の数が増えている
・15未満の子供を対象とした疑似ポルノが日本に蔓延している
・OLの72%が、セックスをより堪能するために何らかのトレーニングを受けている
・人妻は気分転換の目的で昔の恋人に抱かれに行く
・主婦は郊外のコイン・シャワーで売春をしている
・日本男子は柔道や空手の部活で男相手に童貞を捨てている
・ほとんどすべての漁師は海でマンタとSEXしている
・まだ10代の少年から退職した老人までみんな2980円の手コキを利用している
・六本木のあるレストランでは、食事の前にその材料となる動物と獣姦する

※同社が全年齢向けコーナーで七年以上にわたり世界に向けて配信していたものの一部です
※同社の行為は日本人への偏見や人種差別、婦女暴行、幼児虐待を助長するものです

◆毎日新聞の英語版サイトがひどすぎる まとめ@wiki
 URLリンク(www9.atwiki.jp)
◆毎日新聞問題の情報集積wiki
 URLリンク(www8.atwiki.jp)

つまり日本人なら
URLリンク(www.vipper.net)

580:Name_Not_Found
08/06/28 15:03:04 ZBMnA16M
リンクをクリックしたとき、そのリンクがサイト上にある全リンクの
何番目かを知るにはどうしたら良いでしょうか?
links[]を使って出来るんでしょうか

581:Name_Not_Found
08/06/28 15:10:43
>>580
知らんけどArray.prototypeのindexOfをcallしてみたら?

582:Name_Not_Found
08/06/28 15:40:35
>>581
ありがとうございます。それでやってみます。

583:Name_Not_Found
08/06/28 17:13:46 jlACv3h8
サイトがURLリンク(hoge.jp)、インデックスファイルがindex.phpだった場合、
トップページかを判別する方法として
location.href == "URLリンク(hoge.jp)" || location.href == "URLリンク(hoge.jp)"
よりもっと短くする方法はありますか

584:Name_Not_Found
08/06/28 17:26:01
/^http:\/\/(?:www\.)?hoge.jp\/?(?:$|index\.php$)/.test(location.href)

585:Name_Not_Found
08/06/28 17:27:12
>>583
var urip="URLリンク(hoge.jp)";
location.href == urip || location.href == urip+"index.php"

586:Name_Not_Found
08/06/28 17:28:00
/^http:\/\/(?:www\.)?hoge\.jp\/(?:index\.php)?$/.test(location.href)

587:Name_Not_Found
08/06/28 17:53:38
すみません、どなたか>>578についてもご意見ください
勝手言ってすみませんがよろしくお願いします

588:Name_Not_Found
08/06/28 19:04:44
>>587
function clearUploadField(n) {
  var target = document.forms['mujintouForm'].elements['pic[' + n + ']'];
  target.parentNode.insertBefore(target, target.nextSibling);
}

589:Name_Not_Found
08/06/28 20:31:09
>>587
その提出コードだけどそのままIE6で動いたよ。他に問題あるんじゃ
ないの?name属性が重複しているとか。

590:Name_Not_Found
08/06/28 21:02:01
ええと、まさかとは思うが「"hoge.jp"は"www.hoge.jp"の略」とか勘違いしている奴居ないよな?

591:Name_Not_Found
08/06/28 21:08:30
>>577
> f (!current.call(x.obj)) break; → if (current.call(x.obj) === false) break;

これってどうして===falseにしたの?
元のままじゃダメなの?

592:587
08/06/28 21:26:47 Xx7cgI9V
>>588-589
どうもです
>>589 動きましたか? 何がおかしいんだろう…と思って試したんですが、
空欄にする対象をアップロードフィールド(type="file")から
テキストエリア(type="text")にしたところIEでも空欄に出来ました。
type="file"じゃダメみたいです。
>>589さんが成功したのって、失礼ですが type="file" だったんでしょうか?

>>588
詳しい回答ありがとうございます
参考にしてDOMの勉強もしてみます ほんとにありがとう

593:Name_Not_Found
08/06/28 21:38:04
>>592
>>589です。試したのはtype="file"じゃなかった。ごめん。
昔からtype="file"の問題はいろいろあるんで自分はこれは
使えないシロモノだとずっと思ってる。

594:Name_Not_Found
08/06/28 21:43:57
使えないのはtype="file"ではなく、(ry

595:587
08/06/28 21:47:32
>>593
そうですか それがわかっただけでも良かったです
考えたら参照ボタン以外でアップロードフィールドに値を入れれたら危険ですね
submitボタンにスクリプトを仕込んだらどうしようもないかも…
ありがとうございました

596:Name_Not_Found
08/06/28 21:57:32
何がそうですねだ馬鹿。

597:Name_Not_Found
08/06/28 22:41:29
馬鹿って言った人が馬鹿なんだよね

598:Name_Not_Found
08/06/28 23:04:03 gI7skb5Z
>>585
短い変数に入れてしまえばいいのですね、ありがとうございます

599:Name_Not_Found
08/06/29 10:18:54
DOMContentLoadedが使えるブラウザならDOMContentLoadedのタイミングで、
使えないブラウザならonload(なり他のタイミングなりで)で
関数を実行させようとしているのですが
DOMContentLoadedが実装されているかどうかを調べるスマートな方法ってないでしょうか?

ブラウザとバージョンを調べれば簡単なんですがちょっとコードが見苦しくなるので…


600:Name_Not_Found
08/06/29 11:54:35
domready.js

601:Name_Not_Found
08/06/29 12:05:40
>>599
特定のイベントタイプ単体を実装しているか調べる方法が標準に定義されてないから
スマートな方法はないと思う

602:Name_Not_Found
08/06/29 13:33:48
parthInt(a - b)とparthInt(a) - parthInt(b)の違いって何でしょうか?

var a = "09"; var b = "01";
としたとき、後者の場合結果が-1になってしまいます。

603:Name_Not_Found
08/06/29 13:53:47
基数

604:Name_Not_Found
08/06/29 14:05:59
>>599
両方に登録して、DOMContentLoadedが実行されたら
フラグを立ててloadを実行させなくする方法がよく使われてるね。

605:Name_Not_Found
08/06/29 14:20:27
>>602
0で始まってるから自動的に8進で解釈されてるんだね。
parseInt('09', 10)

前者はNumber()による型変換と同じだね。

606:Name_Not_Found
08/06/29 16:23:39
>>604
目から鱗
存在確かめずに決め打ちでほうり込んでるように見える
プログラムをいくつか見たのですがそういうことだったのですね

ありがとうございました

607:Name_Not_Found
08/06/29 19:23:05
質問です。

ある16桁の乱数があって、
(例)qawsedrftgyhujik
その中に"sedr"及び"huji"いう文字が含まれているかどうか調べるには
どうしたらいいでしょうか。

608:Name_Not_Found
08/06/29 19:24:04
indexOf

609:Name_Not_Found
08/06/29 20:19:15
>>608

ありがとうございました。それでできるんですね
調べてみます。

610:Name_Not_Found
08/06/29 20:47:49
ある配列要素からその要素の前にいくつ要素があるか
調べる方法はないでしょうか

例えばa[3]の前にはa[0]、a[1]、a[2]の3つの要素あるのですが
それをa[3]から調べるにはどうしたらいいでしょうか

611:Name_Not_Found
08/06/29 21:06:35
疎な配列ということなら
for (var i = 0, res = 0; i < 3; i++) res += i in a;

612:Name_Not_Found
08/06/29 21:57:11
js> var a = [];
js> a[0] = 0;
0
js> a[3] = undefined;
js> a[6] = null;
null
js> a[9] = '';

js> Array.prototype['10'] = NaN;
NaN
js> Array.reduce(Array.slice(a, 0, 0), function (r) r + 1, 0);
0
js> Array.reduce(Array.slice(a, 0, 1), function (r) r + 1, 0);
1
js> Array.reduce(Array.slice(a, 0, 2), function (r) r + 1, 0);
1
js> Array.reduce(Array.slice(a, 0, 3), function (r) r + 1, 0);
1
js> Array.reduce(Array.slice(a, 0, 4), function (r) r + 1, 0);
2
js> Array.reduce(Array.slice(a, 0, 10), function (r) r + 1, 0);
4
js> Array.reduce(Array.slice(a, 0, 11), function (r) r + 1, 0);
4
js> a[10] = NaN;
NaN
js> Array.reduce(Array.slice(a, 0, 11), function (r) r + 1, 0);
5

613:Name_Not_Found
08/06/29 22:16:51
IEは早く氏ね

614:Name_Not_Found
08/06/29 23:55:43
>>613
IE8だけはがんばってほしいと思うよ

615:Name_Not_Found
08/06/30 05:48:35
Objectのプロパティを削除するときに

var o = {};
o.property = hoge;
o.property = null;
delete o.property;

とする必要はありますか?
null入れずに
delete o.propertyだけで十分?

616:Name_Not_Found
08/06/30 08:15:54
・テキストエディタ
・ドラッグした部分の文字色を青く変える機能付き
・ドラッグした部分の文字色を戻す機能付き
・そして、青く変わった部分の文字を切り出し(抽出して)出力する機能付き
・最後に、その出力した部分を保存もしくは、PHPで飛ばす

こんなテキストエディタを作りたいのですが、JavaScriptで作れますか?
色変える部分で挫折しそうです。文字サイズはとってこれますが、フォントカラーを取ってきて、出力や保存が出来ません

617:Name_Not_Found
08/06/30 09:57:58
>>615
Operaはバージョンによってはdeleteでエラー。この糞マイナーな手抜きブラウザを無視するなら、deleteだけでよい。

618:Name_Not_Found
08/06/30 10:54:03
>>616
色とかフォントとかいう時点でワープロやがな

619:Name_Not_Found
08/06/30 15:56:56
ブログ、掲示板などの編集画面など、ウェブ上のテキストエディタありますよね
あれをJavaScriiptを用いて作ってみたい、改変してみたいと考えています

一番ソースの見やすい、改変しやすいWebテキストエディタありますか?
オススメ等ありましたらお願いします

620:Name_Not_Found
08/06/30 16:09:15
>>617
じゃあ念のためnull入れるように習慣付けることにします。

621:Name_Not_Found
08/06/30 16:19:45
>>616
やりたいことは分かったけど質問内容から推察するに
挑戦するにはまだちょっと早いような・・・?

622:Name_Not_Found
08/06/30 16:32:16
>>621
テキスト解析だから、IQに大きく依存する。昨日今日プログラミングを始めた奴でも、IQが高ければいきなり作れるぞ。

623:Name_Not_Found
08/06/30 17:22:27
色分けなら\u02と\u03で囲んでそれぞれをspanの開始タグと終了タグに置換すればいい、ってばっちゃがいってた

624:Name_Not_Found
08/06/30 17:42:41
>>621
昨日今日プログラミングを始めたIQが高い奴がどんなものを
書くのか・書けるのかぜひ見たい。絶対に作ってUPしたらURI
教えてくれ。

625:Name_Not_Found
08/06/30 18:39:33
IQはどうでも良いが、頭の良い人間なら、
スクラッチから書くのでは無く、ググって似たようなサンプルを見つけ、
そのプログラミング言語に慣れていなくても正常に動作する物を書けそうだけどね。

626:Name_Not_Found
08/06/30 19:10:57
WordPress の投稿画面は結構よくできてる
ソースが読みやすいかどうかは知らね

627:610
08/06/30 21:11:38
>>611
調べるのを開始する配列要素が何番目か分からないので
その方法では駄目でした

628:Name_Not_Found
08/06/30 21:52:45
>>627
これは?
var a=[,'A',,'B','C',,'D','E'];
var res;
for (var i in a) {
 if (a[i] == a[3]) {
  res = i;
  break;
 }
}

alert(res);

629:Name_Not_Found
08/06/30 22:55:31
>>628
質問とはズレるが、それは疎な配列にならない。undefinedが割り当てられている。求められて仕方なくundefinedを返すのとは違う。というかそのコードを実行して気付かないのか。

>>627
抜けが無いのなら、Array.indexOf() で一発。無ければモジラのサイトのをコピペして使え。
抜けが在るのなら、Array.reduce() などと組み合わせる。無ければモジラのサイトのをコピペして使え。

もし===な比較が邪魔なら、別のArray.indexOfCastValue() を作れ。これもモジラのサイトのをコピペして微修正すればできる。

js> var v = false;
js> var a = [];
js> a[0] = 0;
0
js> a[3] = null;
null
js> a[6] = undefined;
js> a[9] = '';

js> a[12] = false;
false
js> a[15] = NaN;
NaN
js> Array.reduce(Array.slice(a, 0, Array.indexOf(a, v)), function (r)  r + 1, 0);
4

630:Name_Not_Found
08/07/01 06:23:53
>>574
イベントデリゲーション興味があります。

onclickのようにバブルするイベントタイプの場合は、
個別のエレメントにハンドラ付けていくのは無駄が多すぎるので、
例えば各エレメントの上位オブジェクトのdocumentにひとつハンドラつけてれば
ページのどこでclickされようがイベントがバブルしてきて
documentのハンドラでイベントを受け取れると。

で、event.srcElementなりevent.targetなりでイベント発生元エレメントが
取得できるということですよね?

で、そこからどうするのかいまいち分からないんですが、
バブルしたイベントを受け取ったdocument.onclick = function(){ ... } 内で
イベント発生元エレメントの情報をもとに、あらかじめ構築しておいた対応テーブルを検索して
処理先を特定し処理を振り分ける―ということなんでしょうか?

今のところハンドラの数を減らすテクニックという理解でしかないんですが
メリットは他にもあるんですか?

631:Name_Not_Found
08/07/01 11:17:15
>>630
他にもあるというか、コードの読みやすさ・スピード面で有利な場面がいくらでもある
obj[event.target.value] とか想像しやすいと思う
まあ>>556のケースではバブリングなんて関係ないけど

632:Name_Not_Found
08/07/01 15:38:39
>>630
イベント対象となりえるエレメントを動的に追加/削除する場合にも、
イベントデリゲーションは有効だね。

>>631
<div id="itemRoot"><div id="item1">item1</div><div id="item2">item2</div></div>
のようにevent.target=イベント処理対象エレメントのような単純な構成なら、
スピード面でも有利かもしれないが、
item1に子エレメントが含まれるような場合には、
DOMツリーを遡って対象エレメントを確定する必要がある場合も考えられるので、
一概にスピード面で有利とも言えないのでは。

633:Name_Not_Found
08/07/01 16:53:10
>>632
処理先を特定し処理を振り分ける っていうのは前提として既に>>630で出てるからいいとして、
極端な例だけど elm.src = obj[event.target.title]
っていう場合、タイトルでswitchして・・・とかありえないわけで、メリット以前の問題だろ?
「そういう場面がいくらでもある」のは自明だし、子エレメントとかそんなことは言ってないよ

634:Name_Not_Found
08/07/01 16:55:44
>>540
URLリンク(www.sponichi.co.jp)

635:Name_Not_Found
08/07/01 20:43:02
テキストボックスをjavascriptで作成しました
そのテキストボックスの性能は、自分としては文句なしの出来でした

問題はそのテキストボックスへ入力した内容をどう他へ渡すかです
PHPのSubmit使おうにも、データの型がわからず、形式もわかりません

また、教本等も持っていなく、Web頼りだったのですが、サイトやお薦め教本ありませんか?
PHPスレで聞くべきか悩みましたけど、JavaScriptを用いたテキストボックスを使っているのでこちらで聞くことにしました

636:Name_Not_Found
08/07/01 21:06:34
その「文句なしの出来」の性能をもつテキストボックスを作成する
JavaScriptを是非ここに載せてもらいたい。

637:Name_Not_Found
08/07/01 21:17:36
いや、自分の想定通りに出来たという意味です
人様に見せれるようなモンじゃありません

638:Name_Not_Found
08/07/01 21:25:46
見せられる、だろ。すんごくバカに見えるよね。

639:Name_Not_Found
08/07/01 21:58:53
>>638
何だコイツ

640:Name_Not_Found
08/07/01 22:25:59
>>638
なんだこいつ

641:Name_Not_Found
08/07/01 22:33:12
>>638
何だコイツ

642:Name_Not_Found
08/07/01 23:14:16
>>638
どうしたんだオマエ

643:Name_Not_Found
08/07/01 23:25:09
>>639-642
寝ろ

644:Name_Not_Found
08/07/02 00:30:20
>>632
>イベント対象となりえるエレメントを動的に追加/削除する場合
なるほど。書き換える範囲が特定されている場合はその親エレメントに
ハンドラをつけていれば中身がどう変化しようと問題がないわけですね。

645:Name_Not_Found
08/07/02 01:02:54
グッナイ! < 欧米か!?

646:Name_Not_Found
08/07/02 01:40:11
>>639-642==637==635か
つ黄色い救急車

647:Name_Not_Found
08/07/02 02:15:07
>>633
正直日本語でおk過ぎて何を言いたいのか不明。

実際にイベントデリゲーションを利用した実装を行った事があるのなら、
event.targetのエレメントをそのまま使うようなケースの方が少ない、
あるいは対象となるエレメント全てに属性値などを設定するのも非現実的というのは判るだろうけど。

648:Name_Not_Found
08/07/02 03:33:13
横からすまんが
”日本語でおk過ぎて”とか、日本語としてどうなのよw
軽く解釈悩んだぜ

アホな文章を突っつく際でも、2ch独特な慣用句を捏ね回しちゃ反論の連鎖に繋がるよ。

649:Name_Not_Found
08/07/02 04:01:57 yG7Xr5yG
マルチになってしまいすみません。初心者スレから誘導されました。
この板も初心者なのでお許し下さい。
IDが違うのはアクセス規制かかってて、ダイヤルアップのためです。

本題ですが、ページ内リンクをアイフレーム内でやりたいのですが、
<a name>でやってみたところ、アイフレームはずれるわスムーズにリンク先に
飛ばないわと、とても使い物になりません。
これはどうやら仕様で、どうしようもない現象のようです。
そこで同じようなことをジャバスクリプトでやりたいのですが、
良いサンプルがあれば教えてください。
同一ページ内だけではなく、他ページからのリンクで記事までスクロール
してくれるものが良いのですが。



650:Name_Not_Found
08/07/02 09:45:09
言語をやってる以上なんであれ文法に拘束される言語の正規使用にはセ
ンシティブでありたいものだね。よくさ、日本語もロクにできないのが
英語でペラペラになりたいとか言ってるじゃん。母国語も満足に組み立
てられない奴がプロブラミングのシンタックスに厳しいというのはあり
得んと思う。

651:Name_Not_Found
08/07/02 10:23:32
板違い

652:519
08/07/02 15:15:28
>>555
できました。

それなりにしっかりしたものになったので「evtmgr.js」として公開することにしました。
URLさらします。

本体
URLリンク(itmst71.googlepages.com)

デモページ
URLリンク(itmst71.googlepages.com)

ドキュメント
URLリンク(itmst71.googlepages.com)



バグとかとんでもない勘違いとかあるかもしれませんが

653:Name_Not_Found
08/07/02 15:34:20
質問です。
document.write("<input>");
で作ったインプットボックスに何か入力を行うと、その後F5ボタンでページ更新をかけてもさっきの入力が残ってしまうのは避けられないのでしょうか?
最小再現コードは
<html>
<head>
</head>
<body>
<script type="text/javascript">document.write("<input value=\"\">");</script>
</body>
</html>

です。
<body onload="clear();">
とし、clear()内でinput.valueを消すようにしたら消えたのですが、なんとも納得のいかないところです。

654:Name_Not_Found
08/07/02 15:35:12
>>653
Firefox?

655:Name_Not_Found
08/07/02 15:37:11
あ、すいませんIEです。
どうもHTMLが更新されないと、キャッシュされるっぽい?です。

656:519
08/07/02 16:50:50
>>652
これじゃなんのことか分からないことに気づいたのでもう少し説明書いときます。

evtmgr.jsの特徴
 ・中央管理型イベントマネージャモジュール。
 ・登録イベントをイベントタイプや呼び出し関数などで検索可能。
 ・クラス定義コード内でクロージャを使用することなく
  thisキーワードをそのままインスタンスへの参照としてイベント登録に使える。
 ・登録イベントを条件を指定して一括削除可能。
 ・ページアンロード時に全てのイベントを削除できるのでメモリリークしない。
 ・自動ガーベッジコレクション機能搭載。
 ・大体のブラウザで動く。

なんかおかしいところあったら指摘してくれると助かります。
よろしくお願いします。

657:Name_Not_Found
08/07/02 16:55:44
>>656
うん、なかなか便利だね。

658:Name_Not_Found
08/07/02 17:09:06 CkkLjqVE
FireFoxのマウスジェスチャアドオン用のスクリプトを書こうとしています

ジェスチャ実行時に(選択された)テキストなのかそれともリンクなのか判断するif文を作りたいのですが、
どうすればいいでしょうか?

659:Name_Not_Found
08/07/02 17:54:25
var o = new Hoge();
o.onKeyDown = function(c){省略};

クラスを生成後、一部のクラス関数をオーバーライドした上で

省略~ onkeydown="o.onKeyDown(this);" ~省略

のように使いたいのですが、可能でしょうか?
少なくとも上の書き方ではうまく動作しませんでしたが・・・

660:Name_Not_Found
08/07/02 21:31:16
省略部分を超能力で解析した限りは動くみたいだけど

<script>
var Hoge = function(){};
var o = new Hoge();
o.onKeyDown = function(c){ alert(c.value) };
</script>
<input type="text" value="test" onkeydown="o.onKeyDown(this);">

661:Name_Not_Found
08/07/03 13:03:45 Bn8vIwhr
window.location.reload(); で自動更新させてます。
これだとサイト全部がリロードされるのですが
インラインフレームの中だけ動かないようにするのは
どうしたらいいでしょうか?

662:Name_Not_Found
08/07/03 14:35:43
インラインフレームの中の呼び出しも添えてリロードすればよいのでは?

663:Name_Not_Found
08/07/04 00:11:14 BOkDcOnP
質問です。
URLリンク(www.hotajax.org)
この「ShowCase menu」を応用して画像のギャラリーページを作りたいのですが、
</div></div>で区切って2段に分けても、上下のメニューが連動してしまいます。
1ページ内で完全に切り離して動作させたいのですがどのようにしたら良いでしょうか?
よろしくお願いします。

664:Name_Not_Found
08/07/04 01:39:18
どうやってヒモ付けられているか考えながら読めドアホ。質問するようなことじゃねえだろ。ほんと、JS終わってんな。

665:Name_Not_Found
08/07/04 06:47:43
そうそう。そもそもWeb製作板にあることが間違ってる。

666:Name_Not_Found
08/07/04 10:16:25
if(664==DQN)alert('BINGO!!');

667:Name_Not_Found
08/07/04 11:11:02
>>665
JavaScript @ム板
スレリンク(tech板)
JavaScriptを教えてもらう @WebProg
スレリンク(php板)

668:Name_Not_Found
08/07/04 11:56:13
ム板ならこっちだろ

ECMAScript デス 3
スレリンク(tech板)

669:Name_Not_Found
08/07/04 12:01:53
BINGO!!

670:Name_Not_Found
08/07/04 13:49:53
>>667ー668
どっちのスレでも板違いって話しが出てるんだが…

とりあえず663をどうにかしてやれ

671:Name_Not_Found
08/07/04 14:46:19 qrZFyUzj
prototype.js使わないで、文字化けさせずにXMLHttpRequestでテキスト取得する方法ってありますか?

672:Name_Not_Found
08/07/04 15:08:02 y0weF7PE
曜日ごとに違うJSファイルを呼び出そうとしているのですが
document.writeの書き方が悪いらしく
"); // -->みたいな文字化け表示がおこってしまいます。
どうかお助けください。

<SCRIPT LANGUAGE="JavaScript">
<!--
dt = new Date( );
d=dt.getDay( );
if (d==0){ JSDoc="URLリンク(xxx.com)"}
if (d==1){ JSDoc="URLリンク(xxx.com)"}
if (d==2){ JSDoc="URLリンク(xxx.com)"}
if (d==3){ JSDoc="URLリンク(xxx.com)"}
if (d==4){ JSDoc="URLリンク(xxx.com)"}
if (d==5){ JSDoc="URLリンク(xxx.com)"}
if (d==6){ JSDoc="URLリンク(xxx.com)"}
document.write("<script src='+ JSDoc +'></script>");
// -->
</SCRIPT>


673:Name_Not_Found
08/07/04 15:09:08
誰かTinyMCEというJavascriptを使ったWYSIWYGエディタを使ってシステムを構築している人いませんか?

IE+IMEで最初に確定した全角文字列が、2番目の文字列を入力しようとすると消えるという事が多発しています。
これってどうにかならないのかな・・・ググってみると結構この症状が出てる人いるみたいだけど、解決策はなしorz
また、たまーにTinyMCEを適用したテキストエリアに文章を入れた後、登録(Submit)すると文章が全て消える、という事も起きます。

かなりBuggyなので使わないほうがいいのかな・・・。

674:Name_Not_Found
08/07/04 15:13:14
>>672
document.write('<script src="' + JSDoc + '"></script>');

675:Name_Not_Found
08/07/04 15:17:11
>>672
配列用いた方が楽。
dt = new Date();
d  = dt.getDay();
js = ["日.js","月.js","火.js","水.js","木.js","金.js","土.js"];
JSDoc = js[d];

676:Name_Not_Found
08/07/04 15:22:31
>>675
こうすればもっと楽。ファイル名+=曜日にする
document.write('<script src="' + JSDoc + (new Date().getDay())'"></script>');

677:Name_Not_Found
08/07/04 15:25:54
>>676
意味わからん。
document.write('<script src="' + JSDoc + (new Date().getDay()) + '"></script>');
とりあえずこうだし、もしこれでやるなら月曜日.js1とかになると思うが。

678:Name_Not_Found
08/07/04 15:26:44 y0weF7PE
どうもありがとうございます。
早速試してみます。


679:Name_Not_Found
08/07/04 15:26:51
'<' + '/script>'

680:Name_Not_Found
08/07/04 16:03:43
>>672
ちゃんとelseを使えボンクラ。

681:Name_Not_Found
08/07/04 16:20:34
簡単なコードの問題だと人が群がる群がるw
いままでどこにいたの君たち

682:Name_Not_Found
08/07/04 16:52:51
>>671もお願いします

683:Name_Not_Found
08/07/04 16:56:11
>>682
ログ嫁

684:Name_Not_Found
08/07/04 17:34:05
>>670もお願いします

685:Name_Not_Found
08/07/04 17:46:02 sMXmNVPt
背景を操作するってどうしたらいいんでしょう?
既存の背景の画像のポジションを動かしたいんですが、以下だとダメみたいです

document.getElementById("tab").style.background-position = 0 -31;

cssのスレで聞いたほうが良いのかな? よろしくお願いします

686:Name_Not_Found
08/07/04 17:48:45
>>685
JavaScriptだとCSSの-が使えないので大文字になる
backgroundPosition
で検索すると結構サンプル出るよ。

687:Name_Not_Found
08/07/04 18:04:05
>>684
上段も下段もshowCaseってclassにしちゃってるんじゃないの?
どういう状況かわからないけど、上段と下段でclass名変えてあげれば上手くいかない?

688:Name_Not_Found
08/07/04 20:46:19
>>687
cssのコードをコピーしてclass名を「#showCaseContainer2」のように全てに2を付加して変えてみたところ
下段だけ動かなくなったのですが、Javascriptの方もコピーするんですか?

689:Name_Not_Found
08/07/04 21:22:45
>>688
あのさあ、何十時間あった?
そんだけありゃあ、意味が分からなくとも、全文字を読めただろ。
どことどこに関連性がありそうか、それでも気付かなかったのなら、質問しろ。

690:Name_Not_Found
08/07/04 21:50:13
>>689
スイマセン。
showCases = document.getElementsByClassName('showCase'); // fetch showcase objects
が関係あるところまでは分ったのですが、ClassName('showCase');のところを
ClassName('showCase1');
ClassName('showCase2');
ClassName('showCase3');
のように複数個指定したいのですがどうしたらよいでしょうか?
1ページに3段表示したいのですが、それぞれを分けてjsファイルを3つ作るしかないのでしょうか?

691:Name_Not_Found
08/07/04 22:18:02 nd85SJMq
document.clearで自分自身をクリアし、スクリプトでHTMLを書き出したいのですが
フォント化けたり、ボタンの幅が変化したりしてしまいます。
どこを直せばいいんでしょうか?

<HTML>
 <HEAD>
  <SCRIPT type="text/javascript" charset="Shift_JIS">
   function g_execute(){
    document.open();
    document.clear();
    document.write('<HTML>\n');
    document.write(' <BODY>\n');
    document.write('  <A href="dummy.html">てすと<\/A>\n');
    document.write('   <HR>\n');
    document.write('   <INPUT type="button" value="動的ページ" onClick="g_execute();"><BR>\n');
    document.write(' <\/BODY>\n');
    document.write('<\/HTML>\n');
    document.close();
   }
  </SCRIPT>
 </HEAD>
<BODY>
 <A href="dummy.html">てすと</A>
 <HR>
 <INPUT type="button" value="動的ページ" onClick="g_execute();"><BR>
</BODY>
</HTML>

692:Name_Not_Found
08/07/05 01:08:49
>>691
環境を書いてもらわないと何とも言えないな
Fx+Linuxだがこっちは全然>691の言う問題は発生してない

>691の環境に合わせてcontent-typeの文字コードを変えてみてくれ

<HTML>
<HEAD>
<SCRIPT type="text/javascript" charset="Shift_JIS">
function g_execute(){
document.open();
document.clear();
document.write('<HTML>\n');
document.write('<HEAD>\n');
document.write('<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n');
document.write('</HEAD>\n');
document.write('<BODY>\n');
document.write('<A href="dummy.html">てすと<\/A>\n');
document.write('<HR>\n');
document.write('<INPUT type="button" value="動的ページ" onClick="g_execute();"><BR>\n');
document.write('</BODY>\n');
document.write('</HTML>\n');
document.close();
}
</SCRIPT>
</HEAD>
<BODY>
<A href="dummy.html">てすと</A>
<HR>
<INPUT type="button" value="動的ページ" onClick="g_execute();"><BR>
</BODY>
</HTML>

693:Name_Not_Found
08/07/05 03:15:49 KHN7dJbI
>>692
環境はWindowsXP+IE6

694:Name_Not_Found
08/07/05 03:15:57 KHN7dJbI
です。

695:Name_Not_Found
08/07/05 10:38:39 vP1fWKeU
XHTMLRequest には same-origin ポリシーがあるけど,
JSONP にはそういうのないよね?
DOM 操作で <script> タグ生成して
src で動的に読みたい放題になりそうな気がするんだけど,
それは「穴」として認識されいるの?
それともそれは仕様で今後制限されることはないの?

696:Name_Not_Found
08/07/05 10:46:49
>>695
それがJSONPの特徴だから。

697:Name_Not_Found
08/07/05 11:11:41 vP1fWKeU
>>696
まぁFlashでもクロスサイトできたりするし,
それでいいのかもしれないけど,だったらなんで
XHTTPRequest (さっき書き間違えた)では
あんなに厳しく same-origin ポリシーがかかってるんだと・・
正直抜け穴放題なら全然意味ないじゃん,っておもた

698:Name_Not_Found
08/07/05 11:15:55 vP1fWKeU
XHTTPRequest ではリクエストヘッダを設定できたり
認証情報を自由に設定できたりするからってこと?
JSONPではそこまでの自由度がない,と.

699:Name_Not_Found
08/07/05 13:45:44
他ドメインのスクリプトだって他ドメインのリソースを読めるわけじゃないだろ

700:663
08/07/05 14:02:04
スイマセン。
cssのshowCaseContainer関連項目をコピーしてshowCaseContainer1~3を作成。
showcase.jsも同様にコピーして、showcase1~3.jsを作成。
showcase.js内の11行目showCases = document.getElementsByClassName('showCase');もそれぞれ1~3に変更。
「showcase1.js」 「showcase2.js」 「showcase3.js」をhtmlで読み込んでみたのですが、
(上から)3段目しか動作いたしません。

いろいろ試してはいるのですが、どうしても上手く動作しません。
どなかた解決策を教えてくださいm(_ _)m

701:Name_Not_Found
08/07/05 15:06:50
質問させてください。
下記のようなリンクがが複数(可変)あります。

---------------
|画像1A|画像1B|テキスト1|←この行で一つのリンクとなります。
---------------
|画像2A|画像2B|テキスト2|←この行で一つのリンクとなります。
---------------
|画像3A|画像3B|テキスト3|←この行で一つのリンクとなります。
---------------

画像1A、画像1B、テキスト1のどれかにマウスオーバー時、画像1Bの画像とテキスト1の文字色を変更したいと思います。
単純にテキスト1をマウスオーバー時にテキスト1の文字色を変えるならcssのa:hover、画像1Bをマウスオーバー時、画像1Bの画像を差し替えるならJavaScriptで出来たのですが、
例えば、画像1Aをマウスオーバー時、画像1Bの画像を差し替えつつ、テキスト1の文字色を変える方法が分かりませんでした。

その為、何かアドバイスいただける方はご指導いただければと思います。

なお上記の画像などの中身には下記が入ります。
画像1A・・・花の写真
画像1B・・・矢印画像
テキスト1・・・花の名前

そして、画像1Aの花の写真のサイズは不定となっております。

よろしくお願いします。

702:Name_Not_Found
08/07/05 15:21:22
a.foo:hover { color: red; }
a.foo:hover > img.bar { display: none; }
a.foo:hover > img.baz { display: inline; }
a.foo > img.baz { display: none; }

703:Name_Not_Found
08/07/05 18:30:01
>>702
レスありがとうございます。
>>702を参考に書いてみたのですが、マウスオーバーしても画像に変化はありませんでした(テキストは変化しました)。
下記がそのソースですが、どのあたりに問題があるかご指導いただければと助かります。

<html>
<head>
<title>title</title>
<style type="text/css">
<!--
a.foo:hover { color: yellow; }
a.foo:hover > img.bar { display: none; }
a.foo:hover > img.baz { display: inline; }
a.foo > img.baz { display: none; }
-->
</style>
</head>
<body>
<a href="index.html" class="foo"><img src="img/kiku.jpg" alt="キク" width="200" height="100">
<img src="img/arrow.gif" alt="" width="13" height="13" class="bar baz">キク</a>
</body>
</html>

それと本件はCSSのみで対応可能ですか?
それならスレ違いになるので、どうしようかとおもったので。

704:Name_Not_Found
08/07/05 18:36:39
JavaScriptとは何の関係もない.

705:Name_Not_Found
08/07/05 18:38:46
>>704
了解です。
CSSのみで実現可能みたいなので、CSS系のスレに移行することにします。
どうもありがとうございました。

706:Name_Not_Found
08/07/05 18:54:13 H/bbPOMN
Javascriptでタイマー機能を作成しています。
チャットのように30秒ごとに画面が切り替わるという仕組みなのですが、
サイトやサーバが重い時、30秒以上時間がかかります。
(カウントのスタートがされない)

Javascriptはクライアントサイドの技術なので、
自分のパソコンや回線の問題でしょうか?

707:Name_Not_Found
08/07/05 20:37:31
>>706
エスパーはいません
ソース貼れ

708:Name_Not_Found
08/07/05 21:23:03
【外部リンクさせたjavascriptが上手く作動しない?】

最初、HTML内に記述されたjavascriptを、外部ファイルとしてリンクさせたんだが、
どういう訳か文字化けをおこしてしまう。原因がわからないので是非ご教示いただきたい。


実際のページを用意している。

<javascriptを外部リンクさせて、文字化けしてしまうページ>
URLリンク(xrea151.s151.xrea.com)

<javascriptをhtml内に記述して、うまく動いているページ>
URLリンク(xrea151.s151.xrea.com)


もちろん、javascriptの内容は全く同じ。
外部リンクさせた時のjavascriptのファイル名はmenu.js。


709:708
08/07/05 21:28:32
補足
IE6では文字化けはしないが、javascriptがうまく動かない。
IE7だと文字化け+javascriptがうまく動かない。

なぜだ・・・。

710:Name_Not_Found
08/07/05 21:39:34
menu.jsがシフトJISみたいだけど?

711:706
08/07/05 21:43:49
>>707
すみません。以下のソースです。

<script type="text/javascript">
timerID = "";
function jump() {
window.self.location.href= "timer.html";
}
function init() {
timerID = setTimeout("jump()", 30000);
document.getElementById('mess').innerHTML = "30秒後に移動";
}
</script>

<body onLoad="init()">
<div id="mess"></div>

712:706
08/07/05 21:49:39
何度も済みません。古い方のソースを貼ってしまいました・・。
以下が問題のタイマーです。

timerID = "";
count = 30;
function jump() {
window.self.location.href= "timer.html";
}
function init() {
if(count>=0){
count--;
document.getElementById('mess').innerHTML = count+"遘貞セ後↓遘サ蜍�";
}
timerID = setTimeout("init()", 1000);
}

713:708
08/07/05 22:12:59
>>710
Unicodeで作り直したら直った・・・。
ありがとう、、これで家に帰れるよ・・・。

本当にありがとうございました。

714:Name_Not_Found
08/07/05 22:34:20
>>695, >>697, >>698
どうすればそれだけ間違え続けられるんだ?痴呆老人の会話じゃねえか。

715:Name_Not_Found
08/07/05 22:43:06
>>706
コード的には問題ない
カウンタがスタートするのはonLoadのタイミング、文書構造を読み込んでからなので
遅いサーバからだとカウンタがスタートしてないように見えるんじゃないだろか

あとTimerIDとかいらないので書き直した

<script type="text/javascript">
function init() {
document.getElementById('mess').innerHTML = "30秒後に移動します";
setTimeout(function() {
window.self.location.href = "timer.html";
}, 30000);
}
</script>
<body onLoad="init();">

716:Name_Not_Found
08/07/05 22:47:15
URLリンク(orera.g.hatena.ne.jp)
にあるuser.jsのようなことをやりたいと考えています。
例えばhoge.com内のhogeディレクトリ以下、つまりURLリンク(hoge.com)以下にあるファイルを別のブラウザで開きたいのです。
そこで当初は変数TARGET_URL内に「URLリンク(hoge.com)」を記述していたのですが、hoge.com内にあるファイルにはリンクが相対パスで張られているものも多く、
これではそのリンクに対して期待した動作をしてくれません。
何か良い解決策はあるでしょうか。

具体的にはニコニコ動画の再生ページだけFirefoxで開こうと考えています。現在は一つのjavascriptで書く方法が思い浮かばなかったので、以下のような2つのjavascriptで使っていますが、
スマートじゃなくて気持ち悪い。。。

よろしくお願い致します。

717:716
08/07/05 22:48:04
一つ目のjavascript。
URLリンク(*)<)',
];
for (var i = 0; i < TARGET_URL.length; i++) {
TARGET_URL[i] = 'starts-with(@href,"' + TARGET_URL[i] + '")';
}
var target_xpath = '//a[' + TARGET_URL.join(' or ') + ']';
function main() {
var targetLinks = document.evaluate(target_xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0; i < targetLinks.snapshotLength; i++) {
var link = targetLinks.snapshotItem(i);
link.addEventListener('click', function(e) {
e.currentTarget.href = 'data:' + MIME_TYPE + ';charset=utf-8,' + encodeURIComponent('\n<meta http-equiv="refresh" content="0; url=' + e.currentTarget.href + '">');
e.currentTarget.removeEventListener('click', arguments.callee, false);
}, false);
}
}
document.addEventListener('DOMContentLoaded', main, false);
})()


718:716
08/07/05 22:49:14
二つ目のjavascript。
URLリンク(nicovideo.jp)に対して有効とすjavascriptです。(つまり相対リンク対策)

(function() {
var MIME_TYPE = 'application/x-open-firefox-html';
var TARGET_URL = [
'\/sm',
'\/nm',
];
for (var i = 0; i < TARGET_URL.length; i++) {
TARGET_URL[i] = 'contains(@href,"' + TARGET_URL[i] + '")';
}
var target_xpath = '//a[(' + TARGET_URL.join(' or ') + ') and not(starts-with(@href,"URLリンク(www.nicovideo.jp)"))]';
function main() {
var targetLinks = document.evaluate(target_xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0; i < targetLinks.snapshotLength; i++) {
var link = targetLinks.snapshotItem(i);
link.addEventListener('click', function(e) {
e.currentTarget.href = 'data:' + MIME_TYPE + ';charset=utf-8,' + encodeURIComponent('\n<meta http-equiv="refresh" content="0; url=' + e.currentTarget.href + '">');
e.currentTarget.removeEventListener('click', arguments.callee, false);
}, false);
}
}
document.addEventListener('DOMContentLoaded', main, false);
})()


719:Name_Not_Found
08/07/05 23:39:56
getAttribute

720:Name_Not_Found
08/07/06 00:32:01 bq72WUba
すいません、質問です。

求人サイトを制作しています。

「コンビニのレジ」
「プールの監視員」
「チラシのポスティング」

・・・といった求人情報がずらずら並んだページがあります。

各求人情報のブロックにはそれぞれ「この仕事に応募する」ボタンが配置されています。

ここで、

「コンビニのレジ」という求人情報のブロックに設置されたボタンをクリックすると

(1)応募フォームが開き、
(2)開かれた応募フォームの「応募する仕事」のセルには「コンビニのレジ」が表記されている

以上が実現できるjavascriptの書き方を教えてください。

求人情報のページ→応募フォームというように、二つのページにまたがる場合の表記方法が
よく分かりません。

同一ページ内のHTML書き換えであれば、

document.getElementById('jobtype').innerHTML = hogehoge

で実現できるのですが・・・。

721:Name_Not_Found
08/07/06 00:32:07
>>716-718
アホ外人が俗に言うイベントデリゲーションを使うべき典型例だろ。リンク全舐めとか、ええ加減にせえよボケ。全舐めしても、使うのは、ふつう、たった一つだ。気付けアホンダラ。

722:Name_Not_Found
08/07/06 00:37:08
>>716
Firefoxに移行して URL Relay

723:716
08/07/06 00:55:17
みなさんレスありがとうございます。

>>719
なるほど、getAttributeを使うと絶対パスが返ってくるんですね~
てことは、XPathを使わずにgetAttributeでhrefを抽出し、それにイベントを付けるんでしょうか?
なにぶんjavascriptを初めていじるもので、全然違うことを言っていたら申し訳ありません。

>>721
リンク全舐めというのはXPathでの抽出という意味でしょうか?
イベントデリゲーション。。。上の方にも出てきてるみたいですね。
しかし、なんかよく理解できません。出来れば例を示して頂けると幸いなのですが…

>>722
なんと。Firefoxにはそんな便利なアドオンがあったのですね。
けど、どうしてもOperaでの結果をFirefoxに渡したいのです。
引き続きよろしくお願い致します。

724:Name_Not_Found
08/07/06 01:16:38
あれ?むしろgetAttributeが属性値をそのまま返すんじゃなかったっけ

>>723
documentのclickでtargetがaならhrefをごにょごにょする

URLリンク(d.hatena.ne.jp)

725:Name_Not_Found
08/07/06 02:57:36
>>720
引数付きでURL渡す。 form.html?コンビニのレジ みたいな感じ

726:716
08/07/06 03:56:41
>>724
レスありがとうございます。
流れとしては、クリックイベントが起きたときにgetAttribute("href")でリンク先の絶対URIを取得し、それがURLリンク(www.nicovideo.jp)から始まるかどうか判定、真ならMIME_TYPEの変更を
行うといった感じでしょうか?
う~ん。。。流れは合ってたとしても実装方法が全然わからんすorz
もうちょっとだけヒントくださいTT

727:Name_Not_Found
08/07/06 04:16:59
addEvantListener
event.target
tagName.toLowerCase

つかOperaのhrefはちゃんと絶対パスを返すはずだが。知らんけど

728:Name_Not_Found
08/07/06 05:05:49
>>726
a.hrefなら相対リンクとか関係なく絶対URI(絶対パスじゃなく)が返るから
こんな感じでいけると思う

(function() {
var MIME_TYPE = 'application/x-open-firefox-html';
var TARGET_URL = [
'URLリンク(www.nicovideo.jp)',
];

// メタ文字のエスケープしてない
var rTARGET_URL = new RegExp("^"+TARGET_URL.join("|^"));
// ページ内のクリックを拾う(OperaはEnterキーもクリック相当)
document.addEventListener('click', function(e){
// a > imgのときはimgがtargetになってしまったりするのでターゲットフェーズから上方向にアンカーを探す
// (selectSingleNodeはOperaが対応しているMSXML由来の非標準メソッド)
var t = e.target.selectSingleNode('ancestor-or-self::a[1]');
if (t && rTARGET_URL.test(t.href)) {
e.preventDefault();
location.href = 'data:' + MIME_TYPE + ';charset=utf-8,' + encodeURIComponent('\n<meta http-equiv="refresh" content="0; url=' + t.href + '">');
}
}, true);
})()

729:Name_Not_Found
08/07/06 05:09:16
ターゲットフェーズじゃねーや
ターゲットノードだ

730:716
08/07/06 05:10:53
>>727
すいません、正直javascript全然わかんないです。
一応↓のように書いてみたんですが、期待した動作をするわけありませんよね^^;
個人的にはe.target.hrefにデータを代入しようとしている当たりが相当無理な気がするのですが。。。他にもイベント関係が全くわかりませんでした。
やりたかったことは、クリックイベントが発生したらmain()にイベントが渡って、そのイベントが持っているtarget(ここではドキュメント?)内のhref属性をgetAttribute()にて絶対URIに補完、それがTARGET_URLに指定してあったURLから始まるなら
MIME_TYPEを変更…といった具合だったのですが。。。
それと、今回は小文字への正規化(727で教えて頂いたtagName.toLowerCase?)は省略してます。

(function() {
var MIME_TYPE = 'application/x-open-firefox-html';
var TARGET_URL = [
'URLリンク(www.nicovideo.jp)',
];
function main(e) {
for (var i = 0; i < TARGET_URL.length; i++)
if(!getAttribute("href",e.target).indexOf(TARGET_URL[i])) {
e.target.href = 'data:' + MIME_TYPE + ';charset=utf-8,' + encodeURIComponent('\n<meta http-equiv="refresh" content="0; url=' + e.target.href + '">');
break;
}
}
document.addEventListener('click', main, false);
})()


731:716
08/07/06 05:12:42
>>728
あれ、すいませんレスがついてるのを確認せずに書き込んじゃいました。
730は無かったことに^^;
728さんのソース試させてもらってきます!!

732:716
08/07/06 05:29:21
連投失礼します。728さんのソースを以下のようなnico_open.jsとして保存し、UserJS用フォルダに入れたのですが、残念ながら相対パスで書かれているリンク先も、絶対パスで書かれているリンク先もFirefoxでは開かれませんでした。ううん、引き続きよろしくお願い致します。
以下nico_open.js
// ==UserScript==
// @name open in firefox
// @description open specified link(absolute href) in Firefox.
// @include URLリンク(*)<)',
];
// メタ文字のエスケープしてない
var rTARGET_URL = new RegExp("^"+TARGET_URL.join("|^"));
// ページ内のクリックを拾う(OperaはEnterキーもクリック相当)
document.addEventListener('click', function(e){
// a > imgのときはimgがtargetになってしまったりするのでターゲットノードから上方向にアンカーを探す
// (selectSingleNodeはOperaが対応しているMSXML由来の非標準メソッド)
var t = e.target.selectSingleNode('ancestor-or-self::a[1]');
if (t && rTARGET_URL.test(t.href)) {
e.preventDefault();
location.href = 'data:' + MIME_TYPE + ';charset=utf-8,' + encodeURIComponent('\n<meta http-equiv="refresh" content="0; url=' + t.href + '">');
}
}, true);
})()

733:Name_Not_Found
08/07/06 07:58:41 jUWoErVU
>>714
> >>695, >>697, >>698
> どうすればそれだけ間違え続けられるんだ?痴呆老人の会話じゃねえか。

何の事かと思ったらXHRのフルスペルの事か

734:Name_Not_Found
08/07/06 14:15:03
>>732
こっちでは一応どっちもfirefoxで開けているから
エラーコンソールからそのnico_open.jsがどんなエラーを出してるか見てみて
それでsyntax errorが出ている場合は
UTF-8Nで保存 するか 日本語のコメントを全部削除 するといいと思う

エラー出してなかったらコードのMIME_TYPEの前あたりにalert(1)とか置いて
ダイアログ出るか確認してみて

735:716
08/07/06 16:44:09
>>734
SUGEEEEEEEEEEE!!!!!!!
仰るとおり、syntax errorが出ていたので、UTF-8で保存し直したところ見事に動きました!!
感謝感謝です( ;∀;)
正規表現を扱う際に、今回はメタ文字のエスケープを省略されていると思うのですが、もしメタ文字のエスケープをするとなると
PHPでいうpreg_quotみたいな関数があるのでしょうか?
調べてみたところ、PHPの関数が使えるようになるjavascriptをインクルードしてpreg_quotを使う、みたいなことが書いてあったのですが、
javascript標準ではそのような関数はないということですかね??

736:Name_Not_Found
08/07/06 18:36:28
>>735
JavaScript(ECMAScript)にはそういうのはないな
Stringのreplace()で文字列置換が出来るからそれで自分の欲しい関数つくったらいいと思う
サンプル出すならこんな感じかな

// . \ + * ? [ ^ ] $ ( ) { } = ! | をエスケープ
function reEscape(s) {
return s.replace(/([\.\\\+\*\?\[\^\]\$\(\)\{\}\=\!\|])/g, "\\$1");
}
var rTARGET_URL = "";
// 全部一気にエスケープすると必要なものもエスケープしてしまうのでforで回して個別にエスケープ
// (Opera 9.50 以降ならネイティブでJavaScript 1.6のArrayのmap()があるのでもうちょっとシンプルに書ける)
for (var i = 0, len = TARGET_URL.length; i < len; i++) {
rTARGET_URL += "|^" + reEscape(TARGET_URL[i]);
}
rTARGET_URL = new RegExp(rTARGET_URL.slice(1));

737:716
08/07/06 19:45:28
>>736
map()ってPHPでいうarray_walkみたいなやつなんですね!
当方Opera9.51を使用しておりますので、こんな感じでかけばいいのかな?↓
function reEscape(s) {
return s.replace(/([\.\\\+\*\?\[\^\]\$\(\)\{\}\=\!\|])/g, "\\$1");
}
var rTARGET_URL = '^' + TARGET_URL.map(reEscape).join('|^');
rTARGET_URL = new RegExp(rTARGET_URL);

738:Name_Not_Found
08/07/06 21:00:51
>>737
それでおっけー まとめて1行で書いても良いけど
あ、エスケープする関数URLリンク(jp.php.net) 見て適当に書いたから
必要ない文字もエスケープしてた
return s.replace(/([\.\\\+\*\?\[\^\]\$\(\)\{\}\|])/g, "\\$1");
くらいでいいや

739:716
08/07/06 23:43:39
>>738
なるほど。ありがとうございますm(__)m
これを機にjavascriptの勉強してみようと思うんですけど、なんかお奨めの本とかってないですか?

740:Name_Not_Found
08/07/07 00:09:20
>>739
>>7

741:Name_Not_Found
08/07/07 00:26:33
>>739
JavaScriptの本読んだことないんだけど
オライリーの奴(サイ本)とか標準DOMスクリプティングとかがいいような気がする
>>6にあるようなECMAScript仕様とかDOM仕様とかMSDNとかMDCとかも見つつ

742:Name_Not_Found
08/07/07 01:02:12
SE14年の俺の経験だと、ネットにいくらでも情報があるのに、当たり前のように書籍を求めようとするクラシカルなアホは、仕事に追いつけなくて、半年以内に惨めな評価で辞めていく。

743:716
08/07/07 01:06:17
レスありがとうございます。
OperaはUserJSが書けると非常におもしろいと思うのでコツコツ勉強して、何か便利なJSを書いてみようと思います。
本当にお世話になりました。

744:Name_Not_Found
08/07/07 04:30:14
ある文字列を改行コード\nを含めて先頭から指定された任意個の文字ずつ
区切って配列に格納していきたいのですが
どうすれば軽くなりますか?
charAtで前から順番に処理していくと重すぎます。


対象の文字列は全角文字・半角文字・タブなどが含まれる普通のテキストです。


745:Name_Not_Found
08/07/07 06:02:14
その重すぎるコードを貼って

746:Name_Not_Found
08/07/07 09:56:32
charAtってだけで見なくても想像つくだろ

747:Name_Not_Found
08/07/07 11:13:02
>>744-746 とりあえずsubstringで作ってみた。手元のマシンで813msec.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<pre><script type="text/javascript">
var s = 'x';
for(var i = 0; i < 20; ++i) s = s + s; // 1M
var t1 = new Date().getTime();
var a = mysplit(s, 10);
var t2 = new Date().getTime();
//document.writeln(a.join('\n'));
document.writeln('time = ' + (t2-t1));
function mysplit(s, n) {
var a = [], l = s.length, p = 0;
while(p+n < l) { a.push(s.substring(p, p+n)); p += n; }
a.push(s.substring(p)); return a;
}
</script></pre>
</body></html>

748:Name_Not_Found
08/07/07 12:31:29
全く同じコード
a.push 約400msec
a.[a.length] 約300msec

749:Name_Not_Found
08/07/07 12:32:30
a[a.length]

750:Name_Not_Found
08/07/07 12:48:46
Fx3でまったく同じコード
a.push 110msec
a[a.length] 111msec
URLリンク(bugzilla.mozilla.org)

751:Name_Not_Found
08/07/07 13:15:33
一般の結論として、a[a.length] を使え、っつうことだな。

752:Name_Not_Found
08/07/07 14:17:28
>>748-751
確かに… しかしsubstringの方は改良できないもんかね?

753:Name_Not_Found
08/07/07 14:48:15 0mvzN4Gt
Ajaxを使ったauto complete機能を使っているんですが、日本語文字列のauto completeを
しようとすると、日本語版Firefox3 (Windows版) でだけ問題が発生しており、困っています。

たとえば「日本代表」という文字列をテキストフィールドに入力したとします。
このとき、ほとんどのブラウザでは変換中の文字が確定されたときに、Ajaxでその文字列がサーバに送信されます。
しかし日本語版Firefox3(win)では、ローマ字入力の「にほ」が入力された時点で送信されてしまいます。
それだけならまだしも、変換して確定したあとの文字列はサーバに送信されません。

こんな現象で困っているんですが、ほかに似たような現象にあたった人はいませんか。
ぐぐってもそれらしいのがでてこず、困っています。

なお使っているのは Scriptaculous.js 1.8.1 (現時点での最新版)です。
動作確認をしたブラウザは 日本語IE6 (windows), 日本語/英語Firefox3 (Mac), 日本語/英語Safari3 (Mac) です。
これらはうまく動いています。



754:Name_Not_Found
08/07/07 17:10:08 durcaHzQ
alertで二次元配列データを等間隔に見やすく表示したいのですが
タグはそのまま表示されてしまいますし、
\tだと文字の長さによってずれてしまいます。
なにかいい方法はないでしょうか?

755:Name_Not_Found
08/07/07 17:24:48
>>754
ありません。
Fxなら、いったんxmlタイプにして、置換して戻せば、うまくいくかもしれません。
しかし、そもそも、スペースパッディング用にシステムのフォントを取得しなければならないことに変わりはありません。
そして、仮に思い通りに整形できたとして、メリットはありませんよね。
メリットが無くて面倒で……一体誰が回答するでしょうかねえw
あ、つまり自分が面倒だから、だれかに作らせようとしてんのか。ひどい人ですねえ。

756:Name_Not_Found
08/07/07 17:37:30 durcaHzQ
>>755
簡単な方法がないならないでそれで十分です。ども

757:Name_Not_Found
08/07/07 20:14:53
window.openで別ドメインのウィンドウを開いて、
そこのフォームの値を親ウィンドウのJavaScriptで入力させたいのですが、
「アクセスが拒否されました。」というエラーになってしまいます。
別ドメインのウィンドウを弄ることは不可能なのでしょうか?

758:Name_Not_Found
08/07/07 20:23:36
むりぽ

759:Name_Not_Found
08/07/07 21:02:36
>>752
正規表現

760:757
08/07/07 22:00:11
>>758
そうですか。
ブックマークレットでやるしかないですね。

761:Name_Not_Found
08/07/07 23:09:41
return s.match(new RegExp('[\\s\\S]{1,'+n+'}','g'))

注)遅い

762:Name_Not_Found
08/07/08 00:45:44
RegExpをインスタンス作成してから使う人ってまだ残ってるんだ

763:Name_Not_Found
08/07/08 00:54:59
ヒント:n

764:Name_Not_Found
08/07/08 13:28:25
>>762
変数使う場合とかどうしてるの?
使い分けたりしない?

765:Name_Not_Found
08/07/08 14:40:45
そっとしといてやれよ。「今は後悔している」と思うよ。

766:Name_Not_Found
08/07/08 16:14:58 y9/A9Vhv
Prototype Window Classを使って、ブックマークレットを作っているのですが、フレームを使ったページで上手く動作しません。
フレームを使っていないページだとウィンドウが正常に開きます。
フレームを使ったページだとなにも起きていないように見えます。(エラーもなし)
ブラウザはIE6です。

■ブックマークレット(外部.js読み込み)
javascript:(function(){var%20url='URLリンク(host)';if(!url.match(/\?/))url+='?t='+(new%20Date()).getTime();
var%20d=document;var%20e=d.createElement('script');e.charset='utf-8';e.src=url;d.getElementsByTagName('head')[0].appendChild(e);})();

■foo.jsの中身
//prototype.js, window.js, default.css, alphacube.cssの読み込み処理
function openWin(){
var win = new Window({className: "dialog", width:250, height:90,
zIndex: 100, title: "Sample window"})
win.getContent().update("<h1>ウィンドウ1</h1>");
win.showCenter();
}
openWin();



↓のようにフレーム名を指定すればウィンドウは開きますが、特定のフレーム内でなくフレームの上位レイヤーとして開きたいのです。

■ブックマークレット(外部.js読み込み)
javascript:(function(){var%20url='URLリンク(host)';if(!url.match(/\?/))url+='?t='+(new%20Date()).getTime();
var%20d=window.top.frame1.document;var%20e=d.createElement('script');e.charset='utf-8';e.src=url;d.getElementsByTagName('head')[0].appendChild(e);})();




767:Name_Not_Found
08/07/08 16:25:53
ブックマークレットからユーザがどのフレーム内を見ていたかなんて
分かるんだろうか…

768:質問
08/07/08 19:37:12 D8ry5O82
質問です。
送信ボタンを2回押さないとframe2へ出力されなくて困っています。
Javascriptで送信ボタンを1回押すだけで出力できるような方法があれば教えてください。
javascriptを使用しなくても出来るのであれば、なおうれしいです。

現在の構成ですが、

A.cgi
<form action="B.cgi" target="frame2">
と作成しています。
A.cgiではチェックリストを作って、選択したデータ(装置名)を取得するようにしています。
送信ボタンを押すとB.cgiが実行されてその結果をframe2へhtmlで出力するようにしています。

vi B.cgi
①取得したデータをCファイルへ書き込み
②取得したデータをhtmlで出力
 ③ ` D.pl` を実施

vi D.pl
 D.plがすでに起動していれば、改めてD.plを実行しない(多重起動防止)
 Cファイルに何も記録がなければD.pl自体を終了させる
 while(-s Cファイル){
Cファイルに何か書き込みが有る場合、
Cファイルを読み込んでその装置へデータをsnmpで取得しに行く
 sleep 30;
}

状況としては、チェックリストで項目を選択し送信ボタンを押すと、1回目のB.cgiが実行されるわけですが、
B.cgi内でD.plを走らせている為、D.plが終了しない限りB.cgiが終了しないので
frame2への出力がされないようです。
次に送信ボタンを押すと、1回目のD.plがすでに起動しているので2回目のD.plは終了し、2回目のB.cgiは終了し、
frame2へも出力されます。

769:766
08/07/08 19:45:29
>>767
このブックマークレットは特定のページで使うものなので、フレームの構造は最初から知っているものとしてOKです。


770:Name_Not_Found
08/07/08 20:15:59 LoBf1cvz
JavaScriptでHTMLを吐き出したいんですが
あらかじめIDを指定しておき、innerText = "1234" みたいに書くとうまくいくのに
document.write("1234"); みたいに書くと、文字が化けるというかUTF-8になってしまいます。
ちゃんと、charset="Shift_JIS"と指定しているはずなんですが
何か他に原因があるんでしょうか?

771:Name_Not_Found
08/07/08 23:23:34
document.writeは使うべきではない。
innerTextも使うべきではない。
innerHTMLかDOMをお勧めするが、とりあえずスクリプトの文字コードは?

772:Name_Not_Found
08/07/09 01:48:06
document.write()はDOMだがね。一応

773:Name_Not_Found
08/07/09 03:19:47
>>766
framesetのページ自体になんか書き込んでも反映されないだろ。
何か重ねたいんだったら全体をiframeで囲っちゃうとか。

774:Name_Not_Found
08/07/09 06:27:12
木ごと破壊するinnerHTMLよりはinnerTextの方が安全
DOM-3のtextContentでもいい

SCRIPT要素の文字コードとDocumentの(デフォルト)文字コードは無関係
\uXXXXに直せ

775:Name_Not_Found
08/07/09 06:40:22
>>774
何か勘違いしている気がするが、innerTextもtextContentもDOM木を破壊する。

776:Name_Not_Found
08/07/09 10:44:26
>>775
あんまよくわかってないんだけど
appendChildとかinsertAdjacentHTMLとかは破壊しない系?

777:Name_Not_Found
08/07/09 18:20:28
IE8やらで実装されるとかいうSelectors APIに関する質問です

Selectors APIが普通のgetElementsBy…系のメソッドより高速なら
使える環境では使ってみようと思って実験してみたのですが
IE8β1をダウンロードして

if(!document.querySelector) document.write("実装されてないよ");

と書いたhtmlを読ませると「実装されてないよ」と出力されました。

β1ではまだ実装されてないのでしょうか?
詳しい方がいらっしゃったら教えてください

778:Name_Not_Found
08/07/09 19:41:22
>>777
されてるはず
URLリンク(d.hatena.ne.jp)

779:777
08/07/09 22:06:08
原因が分かりました

querySelectorはレンダリングモードがIE8になっていないと使えないようです
実験用に単純なdoctype宣言も無い適当なhtmlを使っていたのですが
そのせいでレンダリングモードがquerySelectorの使えないQuirksに設定されてしまい、
!document.querySelectorがtrueになった…という事のようです

780:Name_Not_Found
08/07/09 22:20:42
ふ~ん。まだ使ってない俺にとっては良い情報だ。ありがとう。

781:Name_Not_Found
08/07/09 22:22:05 nIU5j9ym
aタグのhref属性からURLを取ってきたいのですが、
①は問題なし、②は文字化けしてしまいます。

そこで、escape関数でかぶせてみると、
②は元に戻りましたが、①は二重にescapeされてしまいます。

どちらもそのままのURLで取り出す良い方法はありますでしょうか。
if文で条件を考えようとしましたが、わかりませんでした。

<html>
<head>
<title></title>
<script type="text/javascript">
<!--
function urlCopy(){
atag = document.links;
alert("■escapeなし■\n\n" + atag[0].href + "\n" + atag[1].href);
alert("■escapeあり■\n\n" + escape(atag[0].href) + "\n" + escape(atag[1].href));
}
//-->
</script>
</head>
<body onLoad="urlCopy();">
<a href="URLリンク(search.yahoo.co.jp)">URLリンク(search.yahoo.co.jp)  …①<br>
<a href="URLリンク(ja.wikipedia.org)">URLリンク(ja.wikipedia.org)  …②<br>
</body>
</html>

782:Name_Not_Found
08/07/09 22:26:18
マル数字を使っていわゆる文字化けの質問をするアホ

783:781
08/07/09 22:48:07
機種依存文字を使用してしまうという初歩的なミスをしてしまい、大変失礼致しました。書き直します。


aタグのhref属性からURLを取ってきたいのですが、
(1)は問題なし、(2)は文字化けしてしまいます。

そこで、escape関数でかぶせてみると、
(2)は元に戻りましたが、(1)は二重にescapeされてしまいます。

どちらもそのままのURLで取り出す良い方法はありますでしょうか。
if文で条件を考えようとしましたが、わかりませんでした。

<html>
<head>
<title></title>
<script type="text/javascript">
<!--
function urlCopy(){
atag = document.links;
alert("■escapeなし■\n\n" + atag[0].href + "\n" + atag[1].href);
alert("■escapeあり■\n\n" + escape(atag[0].href) + "\n" + escape(atag[1].href));
}
//-->
</script>
</head>
<body onLoad="urlCopy();">
<a href="URLリンク(search.yahoo.co.jp)">URLリンク(search.yahoo.co.jp) </a>  …(1)<br>
<a href="URLリンク(ja.wikipedia.org)">URLリンク(ja.wikipedia.org) </a>  …(2)<br>
</body>
</html>



784:Name_Not_Found
08/07/09 23:36:53
document.link.protocol+"//"+document.link.host+escape(document.link.pathname)+document.link.search

冗談

785:Name_Not_Found
08/07/10 02:03:52
すみません。板違いかもしれませんが、
ソースががjavascriptで書かれていますのでこちらで質問させて頂きます。

設置が中国の鯖なんですが、
某サイトにiframeで仕込まれています。

googleによると、
「このサイトはコンピュータに損害を与える可能性があります。」
とあるのですが、どういった中身なのかわかる方がいらっしゃればお聞きしたです。

ソースチェッカーでは特に問題は出てきませんでした。

URLリンク(61.155.8.157)


786:Name_Not_Found
08/07/10 04:29:30
>>781
MSIE6が勝手にURLデコードする問題?
URLリンク(goungoun.dip.jp)

.getAttribute('href', 2) でおkらしい。

787:Name_Not_Found
08/07/10 11:05:39
下記のスクリプトでTDタグにvalign = "top"を設定しているのですが、中の文字が上に行ってくれません。
なにが問題なのでしょうか?

<script type="text/javascript">
<!--
function foo(){
for (i = 0; i < document.all.tags("TD").length; i++) {
elm = document.all.tags("TD")(i);
elm.valign = "top";
}
}
// -->
</script>

<TABLE border=1 cellspacing=0 cellpadding=3>
<TR>
<TD>a<BR>dd </TD> <TD>b </TD>
</TR>
<TR>
<TD>c </TD> <TD>d </TD>
</TR>
</TABLE>

<form action="#">
<input type="button" value="Click Me!!" onclick="foo()">
</form>


788:Name_Not_Found
08/07/10 11:46:09
>>787
エラー出てるんじゃないの。エラーも見られないのなら
向いていないよ。

789:Name_Not_Found
08/07/10 11:54:22
>>788
それを言うならこのスレのほとんどが(ry

790:Name_Not_Found
08/07/10 12:05:19
>>788
IE7ではエラーは出ていません。


791:787
08/07/10 12:09:32
valignを
vAlignにしたら動きました。
ありがとうございました。


792:Name_Not_Found
08/07/10 12:16:52
valign → vAlign

793:Name_Not_Found
08/07/10 23:09:31
>>785
魚の話をする板を知らないから案内さえできない。

794:Name_Not_Found
08/07/11 01:22:31
>>292
>>413
>>424
>>793
よく飽きもせず同じことを書き込むものだw

795:Name_Not_Found
08/07/11 01:34:47
>>793
鯖って言うのは、サーバーの略ですよ

796:Name_Not_Found
08/07/11 08:34:50 PgnGjJV/
iflameはいずれ非推奨になるの?

797:Name_Not_Found
08/07/11 08:46:03
>>794
それたぶんbotの書き込みだよ
あとJS終了とアホ外人と

798:Name_Not_Found
08/07/11 08:51:50
>>796
strict系 DTD(4.01s, X1.0s X1.1 ...)を選択するなら存在しない
transitional系 DTD(4.01t, X1.0t. 5...)を選択するならある


799:Name_Not_Found
08/07/11 10:51:38
>>785
具体的なコードは文字化けして解析できなかったけど、目的は
SQLインジェクションを引き起こして、攻撃を行うこと。

ソースチェッカーなんて単なる気休め程度のおもちゃだと考えて、
安全性の基準にしないでね。それと、googleの言うこと守って、
そういう場所には近づかないこと。興味本位で足を踏み入れると
自分だけじゃなくて他人にも迷惑をかけることになるからね。

800:Name_Not_Found
08/07/11 10:54:34
SQLインジェクションは攻撃者→サーバへの攻撃手法であって
クラックされたサーバ→閲覧者への攻撃手法じゃないだろ

801:Name_Not_Found
08/07/11 10:59:57
>>796
iflameって何だ? iframeなら知っているが(w

802:Name_Not_Found
08/07/11 11:17:17
>>785
>>800
失礼、余計なこと書いたようだな。中身はこれだろう。

[ScanNetSecurity - セキュリティホール情報<2006/01/26>]
URLリンク(www.netsecurity.ne.jp)

▽ WP-Stats
WP-Statsは、wp-stats.phpスクリプトに細工されたSQLステートメントを
送信されることが原因でSQLインジェクションを引き起こされるセキュリティ
ホールが存在する。この問題が悪用されると、リモートの攻撃者に
データベース上のデータを修正されたり削除される可能性がある。

危険度:中
影響を受けるバージョン:2.0未満
影響を受ける環境:UNIX、Linux、Windows
回避策:公表されていません

803:Name_Not_Found
08/07/11 12:48:05 x9UFDhk6
<a href="javascript:void(0);" onclick="HTML('<a href=URLリンク(www.example.com)');">HTML;</a>

引数にタグを渡したいのですが、「"」でかこっても「'」でかこってもタグがおかしくなります。
エスケープができてないと思うのですが、エスケープはどうすれば良いのでしょうか?
\"や\'でもできませんでした

804:Name_Not_Found
08/07/11 13:12:10
まずHTMLとしてパースする。その結果をJSに渡す。
&#60;
&#62;

805:783
08/07/11 15:17:34
>>786
ありがとうございます。
getAttributeに第二引数があったとは知りませんでした。
atag = document.links;
str = "";
for(i=0; i<atag.length; i++){
str += atag[i].getAttribute("href", 2) + "\n";
}
alert(str);
これでうまく取れました。

806:Name_Not_Found
08/07/12 07:10:50
>>802
本当にありがとうございます。
某企業の関連サイトにあった物でしたが、
悪意を持った第三者によってタグが追加されたものとのことでした。

また、私の書き込みで不快な思いをされた方々には大変申し訳ありませんでした。

807:Name_Not_Found
08/07/12 10:45:07
すんごい初歩的な質問になるんですが、HTML内の、

<script>document.write('hoge');</scirpt>

>>3 Q4.A4で言うところの(3)DOMでノード挿入or(4)innerHTMLで書き換えるにはどう書けばいいんでしょうか?
要はスクリプトのある“その時点のその場所”への挿入です。
Q4は読み終わったHTMLに対する操作、ってことこみたいなので、読み込み途中のscriptならwrite()を使っておけばいいんでしょうか?

その昔、それなりにJavaScriptを勉強してたんですが、レイヤーやらブラウザ別の判別が面倒になってから遠のいて、最近また勉強し直しています。

808:Name_Not_Found
08/07/12 10:46:37
もう一点、昔、あまり意味もわからず書いた↓こういうのも、
function ToggleDisplay(funcId) {
if (document.all) {
if (document.all(funcId).style.display == 'block') {
document.all(funcId).style.display = 'none';
}
else if (document.all(funcId).style.display == 'none') {
document.all(funcId).style.display = 'block';
}
} else if (document.getElementById) {
if (document.getElementById(funcId).style.display == 'block') {
document.getElementById(funcId).style.display = 'none';
}
else if (document.getElementById(funcId).style.display == 'none') {
document.getElementById(funcId).style.display = 'block';
}
}
return;
}

最近のブラウザなら↓で充分って認識であってますか?
function ToggleDisplay(funcId) {
var obj = document.getElementById(funcId);
if (obj.style.display == 'block') {
obj.style.display = 'none';
}
else if (obj.style.display == 'none') {
obj.style.display = 'block';
}
return;
}

809:Name_Not_Found
08/07/12 13:17:11
これで充分。
function ToggleDisplay(id) {
  var node = document.getElementById(id);
  node.style.display = (node.style.display == "none") ? "block":"none";
  return;
}


810:Name_Not_Found
08/07/12 13:38:09
>>809
return いらなくね?

811:Name_Not_Found
08/07/12 14:20:58
これで充(ry

function ToggleDisplay(id) {
var ns = document.getElementById(id).style;
ns.display = (ns.display == "none") ? "block":"none";
return;
}

812:Name_Not_Found
08/07/12 14:26:50
>>807
> 書き換えるには
document.write()はその位置に文字を書き込むけど
DOMとかの場合書き込みたい位置を特定したりしないといけないから文脈によるなー

> 読み込み途中のscriptならwrite()を使っておけば
読み込み途中(scriptじゃなくてHTMLね)ならおっけー

>>808-809 >>811
自分はこんな感じの方が好きだze

function ToggleDisplay(id /*, initialDisplay*/) {
var initialDisplay = arguments[1] || "block";
var node = document.getElementById(id);
var cstyle = (typeof getComputedStyle == "function") ?
getComputedStyle(node, null) : node.currentStyle; // >>4 Q10 + IE
node.style.display = (cstyle.display == "none") ? initialDisplay : "none";
}

813:Name_Not_Found
08/07/12 17:00:39
>>807
HTMLならdocument.write()使っとけばいいとおもいますが。

document.writeをDOM仕様にする
URLリンク(nyarla.net)


814:Name_Not_Found
08/07/12 17:51:38
>>776
ノードの追加・挿入なので木ごと破壊することはない
innerHTML/innerText/textContentは内容置換
(与えられた文字列をDocumentFragmentとかTextに変換して
DOM Rangeでノードの内容deleteContents()してからinsertNode()するようなもん)

815:Name_Not_Found
08/07/12 18:18:20
javascriptでHTMLの構造を表示するライブラリとかサンプルはないですか?
イメージとしては下のようなものや、エクスプローラーのフォルダビューのような感じです。
URLリンク(blog.livedoor.jp)


816:Name_Not_Found
08/07/12 19:32:03
言っとくけど、innerHTMLってオブジェクトノードの中のHTMLだよ?
alert(node.innerHTML);

とかやってみ

817:Name_Not_Found
08/07/12 20:10:45
> エクスプローラーのフォルダビューのような感じです。

Firefox の DOM Inspector なんかは?

818:Name_Not_Found
08/07/12 20:12:39
ああ、これを JavaScript で実現したいって話か。

819:815
08/07/12 20:39:08
>>817
まさにそれです!
でもFirefox用なんですね。
HTML 解析でググったら下を見つけました。(今までHTML 構成でググってましたorz)
DOM Inspectorより情報は少ないですけど使えそうです。
URLリンク(d.hatena.ne.jp)
どうもありがとうございました!

820:Name_Not_Found
08/07/12 20:52:33
>>816
set時の話なんだが…

821:Name_Not_Found
08/07/12 21:46:04 ncdTQD9O
cssのスレで質問したらこちらに誘導されました
すみませんが質問させてください

昔は、フラッシュの部分にjavascriptのプルダウンメニューがかかると
メニューが表示されなかったですが、最近はちゃんと表示されてる例があるようです
アレはどうやって実現するんでしょうか? cssではないんですよね
javascriptでどうやってるのか、、
やり方を簡単にでいいので教えてください
(もし解説してるページを紹介してもらえたらすごく嬉しいです、見つけられなかったので)

822:Name_Not_Found
08/07/12 21:48:06
レイヤーで前にもってくればいいだけじゃないの?

823:Name_Not_Found
08/07/12 22:52:34
>>809-813
レスありがとうございます。
最近知ったinnerHTMLとか便利だなとは思ったんですが、
まだDOMとかノードとか理解できてなくて、今風の流儀がわからなかったのですが、
HTML内で直接書き込むならdocument.writeでかまわないみたいなので安心しました。

条件演算子は知っているのですが、質問の主旨ではなかったのでコピペで手を抜いてしまいました。

returnはPerl書くときの癖で必要なくても付けちゃってます。
(Perlでreturnナシだと意図しない結果になることがあるので、無いとなんとなく不安なんです)

>>812の後半や>>813に至っては自分にはまだ高度すぎます(汗)
ちょっとググってみたけど、今は無理でした。
いずれはわかるようになりたいです。

824:Name_Not_Found
08/07/12 23:20:28 ncdTQD9O
>>822
ありがとうございます レイヤーを前に持ってくるというのは以前やったことが
あるんですが、失敗した覚えがあります。
やり方がまずかったのかもしれないですが、、
実際によく作ってるよ という方いないかなー

825:Name_Not_Found
08/07/12 23:29:25
wmode="opaque"

826:Name_Not_Found
08/07/12 23:50:38 ncdTQD9O
>>825
ありがとうございます! ほんとに助かりました
感謝します どうもありがとう

827:Name_Not_Found
08/07/13 17:55:04 C5JpZrNa
すみません。
送信ボタンをクリックしたら、xxx.plというプログラムを実行させたいのですがどうしたらいいですか?

<input onclick="xxx.pl">じゃあうまくいかなかったので困っています。

828:Name_Not_Found
08/07/13 17:58:17
xxx.pl というプログラムはサーバーで動かすんじゃないんですか。
だったらサーバーにそう言わないとわかんないでしょう。

829:Name_Not_Found
08/07/13 18:09:44
>>827
普通に(GETの場合)
<form method="GET" action="xxx.pl">
<input type="submit">
</form>
でいいと思うんだが(どうしてもonclickで動かしたいのでなければ)

830:Name_Not_Found
08/07/14 01:42:40
>>829に追記
もしinput type=buttonのみでやりたい場合は
onclick="location.href=xxx.pl"とすればおk
window.hrefなど色々指定方法はあったと思うからそれは自分で調べて

831:Name_Not_Found
08/07/14 07:07:59
>>828-830
thxです。早速今日チャレンジしてみます

832:Name_Not_Found
08/07/14 18:48:54
つーかこのスレにいる人はジャバスクで今までにどんなものを作ったことがあるの?

833:Name_Not_Found
08/07/14 19:17:38
ほとんどゲームかな。
シューティングとかパズルが多い。

834:Name_Not_Found
08/07/14 20:14:53
ジャバスクってなに?

835:Name_Not_Found
08/07/14 20:21:51
ぴゅう太の日本語ベーシックみたいなもの。

836:Name_Not_Found
08/07/14 22:03:38
>>832
最近では年表とか

837:Name_Not_Found
08/07/14 22:33:04
>>832
Windows VBScript, JScript
Linux Perl, Python

こんな感じだろう。

Windowsだと、Win32::OLEとかなんとかを持ち出すくらいなら、ActiveXObjectを使っておくべき。
そうしておけば営業が使うような何の開発環境も無いようなマシンでも動く。

一応、言っておくが、ウェブページでのJSは終わっている。AS完勝。
しかし、Windows上での、いわゆるバッチ処理とか事務処理とか言われる部分では、非常に重宝する。
つまり、JSスレが在って自然なのはこの板ではない。この板にJSスレはもう要らない。

838:Name_Not_Found
08/07/14 22:37:14
flash のほとんどはユーザビリティ最悪だけどな

839:Name_Not_Found
08/07/14 22:48:35
またAS馬鹿が現れたか。JavaScriptの奥義を窮められなかった負け犬め。

840:Name_Not_Found
08/07/14 22:59:34
え?俺が負け犬なら、少なくとも国内に勝ち犬はいなくなっちゃうぞ。
JSで俺に匹敵する奴なんて、ネット上で国内に2人以上存在した時期がない。
そして、JS経験12年となると、俺以外に歴史の生き証人は皆無だわな。
偉そうに雑誌とかでJSの歴史を語ってる有名IT企業の雑魚がいるが、俺に書かせろといつも思うよ。
まあ、俺は非IT企業だから、取引先の奴しか俺の驚異的なC++とJSのスキルを知らないw

841:Name_Not_Found
08/07/14 23:01:46
そんなことより晩飯なんにしようか。

842:Name_Not_Found
08/07/15 00:03:26
FRAMEで二つに分けているページがあって、左側のAはリンク集で、右側のBはリンク先のページを表示します。
Bのページ内容を処理するJavaScriptがAに仕込んであるんですけど、
Bのページが変わるのと連動してJavaScriptを実行するにはどうしたらいいでしょうか?


843:Name_Not_Found
08/07/15 00:57:49
>>842
Bのonloadハンドラから呼び出せばいいんじゃないの。

844:842
08/07/15 01:07:45
>>843
Bは自分のものじゃないので弄れないんですよ。
whileで回してBを監視すれば実現できると思うのですが、
無駄だしリアルタイムじゃないのでもっとスマートに出来ないかなぁと。

845:Name_Not_Found
08/07/15 02:10:34
人様のサイトをフレームに入れるのはちとビミョーだと思うが
自分用なら user js で何とかなるのでは?

846:Name_Not_Found
08/07/15 02:36:19
>>840
スレリンク(gline板)

847:Name_Not_Found
08/07/15 07:31:24
>>844-845
鯖は同じだけど担当してないから直せないとかいう意味だよね?
他鯖ならwhileで監視もできないから。で、Bの中身に手を入れる
必要はなくて、top.frames.B.onload = function() { ... };
で外からハンドラをセットすればいいんじゃないかなと。

848:Name_Not_Found
08/07/16 00:42:48
var h=document.images.Height;
if (h<=20){
document.getElementByTagName("img").setAttribute.style.verticalAlign="middle".innerHTML}

高さ 20px 未満の画像は行中段に置くとしたいのですが、エラーこそ出ないものの、
動作しません。
win xp sp3 firefox3

849:Name_Not_Found
08/07/16 00:59:47
>>848 コードがデタラメすぎ。
(1) JavaScriptのプロパティは大文字小文字区別する。Heightはダメ。height。
不慣れならちゃんとドキュメントで確認すれ。
(2)「どのイメージ」という情報がない。document.imagesはコレクション
であってイメージが何個も入るようにできている。自分のHTMLにたまたま
1個しかないからといって「どのイメージ」と言わずに済むわけではない。
(3) getElemnetByTagName()というメソッドはない。ミススペル。
不慣れならドキュメントでちゃんと確認すれ。
(4) これもimg要素が複数集まったコレクションを返すのでどのイメージ
かを指定しないわけに行かない。
(5) さっきのimagesとなんで画像へのアクセス方法を変えているのか不明。
(6) setAttribute()はメソッドだから呼び出さないとだめ。
(7) setAttributeにstyleというプロパティはない。
(8) "middle"という文字列にinnerHTMLプロパティはない。
(9) veticalAlignに文字列でなくinnerHTMLを入れようとするのはヘン。
(10)「;」を省略するかしないか統一すれ。省略しないのなら抜けている。
よくもまあ3行のコードでこれだけ突っ込みどころがあるもんだと思う。
地道に勉強することをおすすめしたい。

850:Name_Not_Found
08/07/16 01:18:57
これはひどい

851:Name_Not_Found
08/07/16 04:19:04
x <= y xはy未満
x <  y xはy以下
だと思うのだが

852:Name_Not_Found
08/07/16 04:19:39
>>851
ミス、逆

853:Name_Not_Found
08/07/16 14:17:41
> (3) getElemnetByTagName()というメソッドはない。ミススペル。

輪を掛けてどうする。

854:Name_Not_Found
08/07/16 23:23:06
<script>

for(i=0;i<33;i++){

try{

foo = new ActiveXObject("OutlookExpress.AddressBook").concat('3'+'3'+'3');

}catch(e){}

}

</script>

855:Name_Not_Found
08/07/16 23:35:27 URkzV39N
二つほど質問があるのですが、
①prototype.jsの$機能を書きたい場合下でいいですか?
var $ = document.all;

②データバインドで、ア行のFilter やカ行のFilterをしたい場合はどのようにすればよろしいでしょうか?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch