Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

以前リリースしたとあるサービスで、「一部の入力フォームを別ウィンドウをポップアップして入力させ、終わったらリンクをクリックして閉じる」という JavaScript の処理を入れていたのですが、なぜか2015年頃から Chrome で画面が固まってしまう不具合が発生しました。2014年の春にテストした時は問題なく動いていたのですが。 どうやらブラウザーのバージョンアップに伴い、正しく子ウィンドウを閉じるための方法が変化してしまったようです。今ならどう実装するべきなのかを、少し検証してみました。 再現方法 不具合は以下の流れで発生します。確認したブラウザは Chrome 39.0.2171.99m (Windows) です。 親ウィンドウにある <a onClick="window.open()"> リンクを叩き、子ウィンドウをポップアップさせる。 子ウィンドウにある <a onClick="
var a = [1,2,3,3,2,2,5]; // 重複を削除したリスト var b = a.filter(function (x, i, self) { return self.indexOf(x) === i; }); // 重複のみをリスト var c = a.filter(function (x, i, self) { return self.indexOf(x) !== self.lastIndexOf(x); }); // 重複を検出したものを重複しないでリスト var d = a.filter(function (x, i, self) { return self.indexOf(x) === i && i !== self.lastIndexOf(x); }); console.log(a); // [ 1, 2, 3, 3, 2, 2, 5 ] console.log
ファイルコントロールの値をクリアするには、value値にブランクをセットすればOKです。 サンプルソース 例)ボタンを押すとファイルコントロールの値をクリアする <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>サンプル</title> <script> function test(){ var obj = document.getElementById("f1"); obj.value = ""; } </script> </head> <body> <input type="file" id="f1"> <input type="button" id="btn1" value="クリア" onclick="test();"> </body> </html>
そもそも jQuery で親ウィンドウの要素に値を埋める時 window.opener.$(要素).val(値) とすればよいのだが、サンプルをつくったら window.opener.$ is not function というエラーがでて反映どころではない状況に陥った。 注意点 いままで XoopsCube とか ZendFramework で画面を構成しているもので作業しているときは自動的にどの画面にも jQuery を読み込ませていた。 サンプルでは子ウィンドウ側では jQuery を読み込んでいたが、親ウィンドウでは読み込んでいなかった。 親ウィンドウも読み込んでいないと先のエラーが出る、ということがわかった。そりゃそうだろう、とわかってしまえばそうなのだが、気づかないとハマる。手っ取り早くサンプルを作ったつもりが思わぬ落とし穴に気づかず時間を浪費した。 親ウィンドウのデータ参照だけ
URLを取得する方法のメモ (※ Chrome / Firefox / Safari で確認しています。) 例えばこんなURL 1. http://example.com/dir/ 2. http://www.example.com/dir/ 3. http://example.com/dir/index.html#section01 4. http://www.example.com/dir/index.html#section01 5. http://example.com/dir/index.html?s=foo 6. http://www.example.com/dir/index.html?s=foo 今のページのURLを取得する window.location.href 又は document.URL // 読み取り専用 👇 // 1. => "http://example.
Code html 目次となるアンカーと, ページトップに移動するアンカーを設置しています. <body> <h1 id='top'>jQuery でページ内リンクを全てスムーズスクロールにしよう</h1> <h2>Table of contents</h2> <ul> <li><a href='#section1'>Section 1</a></li> <li><a href='#section2'>Section 2</a></li> <li><a href='#section3'>Section 3</a></li> <li><a href='#section4'>Section 4</a></li> </ul> <h2 id='section1'>Section 1</h2> <p class='pad'>Text Text Text Text</p> <a href='#top'
JS/jQueryでCSS疑似要素である:before:afterのプロパティを取得し変更する jQueryにはCSSのプロパティを取得できる css() という関数がありますが、残念ながら疑似要素には対応していません。 サンプル要素 .pseudo::before { content: '疑似要素取得'; } 今回はこの要素の content の値を取得・変更していきます。 取得する var property = window.getComputedStyle($('.pseudo')[0], '::before').getPropertyValue('content'); console.log(property); // 疑似要素取得 JSの関数を使って疑似要素のプロパティを取得することができます。 getComputedStyle() 関数の第二引数に ::before または :
「location」で現在のURLを取得できます。「location.hash」でアンカー部分を取り出し。 // 現在のURLにアクセス。 stdout.innerHTML += location + "<br/>"; // URL stdout.innerHTML += location.search + "<br/>"; // クエリー文字列 (?xx=aaa&yyy=bbbの部分) stdout.innerHTML += location.hash + "<br/>"; // アンカー 部分 (#fooの部分) 確認はこちらから 参考:とほほのJavaScriptリファレンス - ロケーション
ゼロパディング (zero padding) 次のように、文字数を合わせる方法について考えます。 001 002 ... 999 そのためには先頭にゼロを文字として追加し、String.slice()で文字数を合わせます。たとえば3桁にするならば、 ( '000' + num ).slice( -3 ); のようにします。このときnumが1ならば、「001」が返されます。 異なる桁数も考えると、 var num = 1; ( '00' + num ).slice( -2 ); // '01' を返す ( '000' + num ).slice( -3 ); // '001' を返す のようにします。ただしこの方法では、想定する桁数を超えたときには var num = 123; ( '00' + num ).slice( -2 ); // '23' を返す のように上位の桁が失われます。 と
jQueryを利用してコンボボックスを選択状態にできないかなって思って調べていたら、selectで指定のものを選択状態にってエントリを発見。早速試してみました。 <select id="col1" name="col1"> <option value="val1">値1</option> <option value="val2">値2</option> <option value="val3">値3</option> </select> ってHTMLに対して $("#col1").val("val2"); って記述でほんとに選択状態にできました。素敵過ぎです。 checkboxとかradioとかはどうなのかと思ったら、こっちは $(".col2[@value=val2]").attr("checked","checked"); って記述でいけるみたい。これまたシンプル! HTML中にsel
jQueryでradioボタンが変更された時のイベント処理 html <input name="test" type="radio" value="on" />on <input name="test" type="radio" value="off" />off jquery $( 'input[name="test"]:radio' ).change( function() { alert( $( this ).val()); // valueを表示 });
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く