タグ

Javascriptに関するmiya2000のブックマーク (688)

  • MessageEventコンストラクタとpostMessageとWeb messagingについて

    MessageEventって何? MessageEvent というのは、server-sent events, Web sockets, cross-document messaging, channel messaging, broadcast channels などで使われてる、データをやり取りとりするときに使われてるEventの一種です。 よく見かけるのだと、 window.postMessage で渡されるeventは MessageEvent という型になってます。(WebWorkerとかとやりとりするときもこれですね) MessageEvent型のオブジェクトは以下のようなプロパティを持ってます。 data データ体(仕様ではanyとなってるので配列とかも渡せます) origin データ送信元のオリジン(targetOriginで指定されたやつ) lastEventId この

    MessageEventコンストラクタとpostMessageとWeb messagingについて
    miya2000
    miya2000 2013/12/15
    オレオレ origin ができるとまずそうなのであとで確認。/postMessage の第2引数は targetOrigin だけど dispatchEvent の方も同じ意味なのかな。
  • ブラウザのデコード機能を利用した Shift JIS などの読み込み : document

    3月12 ブラウザのデコード機能を利用した Shift JIS などの読み込み はじめに JavaScript でバイナリから文字列を取り出したら Shift JIS だったなんてことよくありますよね。 そういう文字列もさっと表示したいことがあります。 読み込む方法はいくつかある これらの文字列を読み込む方法はいくつかあって、自分が把握してるだけでも以下のものがあります。 Shift JIS と UTF-16 の対応表をつくる ぽりごんさんの文字コード変換ライブラリ Blob, File API を使って読み込む 右京さんの javascriptのnative APIで任意の文字コードからutf8に変換 script, Data URL を使って変換 1, 2 の方法についてはそれぞれ解説や実装があるのですが、3 の方法については見当たらなかったので説明してみます。 準備 念のため 2 段

    miya2000
    miya2000 2013/03/13
    あとで試してみる。script 側の charaset 外してみたり script#onload 使ってみたり iframe とか。/昔 Applet 使ってやりました。http://d.hatena.ne.jp/miya2000/20100316/p0
  • IE 6/7 で文書間通信を実現するための一案: Days on the Moon

    HTML5-WEST.jp 飲み会 UST というのがあるそうで、「参戦希望者募集」とお誘いを受けたのですが、「参戦」というからには何かしら戦の準備を整えねばなるまいと、以前から考えていたことを夜なべして実装しました。 文書間通信をより広範囲な環境で動作させるための考察 IE 6/7 を含む各種ブラウザで動作する、異なるドメイン間での通信のデモ いわゆる HTML5 の文書間通信、window.postMessage() を IE 6/7 でどう再現するかという話で、about:blank を指す隠しフレームを二つ用い、window.name を介することで双方向の通信を実現しています。 どうも IE での about:blank は、その空白ページを読み込ませた文書の生成元を継承するらしく、たとえば http://example.org/ から location.href = 'abou

    miya2000
    miya2000 2011/12/09
    this.(senderWin|receiverWin).location.replace('about:blank'); で子(孫) iframe の親権を奪い合う。定期的に親権をチェックして、親権が自分のものなら何もしない。
  • JSDeferredのparallelとwaitで最低遅延時間を設定する - Webtech Walker

    Ajaxでデータとってくる間にローディングいれるとき、場合によっては処理が一瞬で終わって逆にローディングがチカっとしてうざいので最低でも1秒はローディング出すって処理を最近だとJSDeferred使ってこんな感じで書いてる。 loading.show(); Deferred.parallel([ Deferred.wait(1), function() { var d = Deferred(); $.get('hoge', function() { // 何か処理 d.call(); }); return d; } ]) .next(function() { loading.hide(); }); 便利なり。

    JSDeferredのparallelとwaitで最低遅延時間を設定する - Webtech Walker
  • neue cc - ToArray vs ToList

    LINQの結果は遅延評価なので、その場で全部評価して欲しかったりする場合などに使うToArrayとToList。どちらを使っていますか?私はToArrayのほうが好みです。と、いうのも、LINQで書く以上、長さは決まったようなものなので、これ以上AddやRemoveしたいことなんてほとんどない。勿論、必ずないとは言いませんので、その場合だけToListを使いますが、そうでない場合は、長さが固定だという意図を示すためにもToArrayが好ましい。 パフォーマンス T[]やList<T>に変換されたあとだと、T[]のほうが、大体においてパフォーマンスは良い。という点でもToArrayがいいかなあ、と思うわけですが、それはさておき、ではToArrayとToListメソッドそれ自体のパフォーマンスはどちらのほうが良いでしょうか?理屈の上ではToListのほうが上です。というのも、変換処理は下記の図

    miya2000
    miya2000 2011/08/05
    「これが最適化のための10箇条、みたいなことをやるのは間抜けだと思います。」javascript タグつけておきますよー。まあ JavaScript が今ほどは速くなかった時代があるので全く無駄だとは思わないですけれども。
  • String - JavaScript | MDN

    標準組み込みオブジェクトStringコンストラクターString() コンストラクター静的メソッドString.fromCharCode()String.fromCodePoint()String.raw()インスタンスメソッドString.prototype.anchor() 非推奨 String.prototype.at()String.prototype.big() 非推奨 String.prototype.blink() 非推奨 String.prototype.bold() 非推奨 String.prototype.charAt()String.prototype.charCodeAt()String.prototype.codePointAt()String.prototype.concat()String.prototype.endsWith()String.prototyp

    String - JavaScript | MDN
    miya2000
    miya2000 2011/07/24
    「文字列同士の比較 C 開発者は、文字列同士の比較のために strcmp() 関数を使います。JavaScript では、単純に、小なり及び大なり演算子を使ってください。」
  • ブラウザで開いているタブが最前面かどうかを判断する (Kanasansoft Web Lab.)

    最新のブラウザの一部は、パフォーマンス向上を目的として、バックグラウンドタブのsetTimeoutとsetIntervalのタイマー間隔が最短で1000msになった。この時間差を利用すると、タブが最前面かどうかを判断することができる。以下、実証コード。 var xGround=function(listeners){ var interval=100; var preTime=new Date().getTime(); var preStatus=null; var timer=function(){ var nowTime=new Date().getTime(); var xGround=(Math.abs(nowTime-preTime-interval)<100)?"fg":"bg"; var switchFlag=((preStatus||xGround)!==xGround);

    miya2000
    miya2000 2011/07/06
    「最新のブラウザの一部は、パフォーマンス向上を目的として、バックグラウンドタブのsetTimeoutとsetIntervalのタイマー間隔が最短で1000msになった。」
  • How can I convert a string to boolean in JavaScript?

    Can I convert a string representing a boolean value (e.g., 'true', 'false') into an intrinsic type in JavaScript? I have a hidden form in HTML that is updated based on a user's selection within a list. This form contains some fields which represent boolean values and are dynamically populated with an intrinsic boolean value. However, once this value is placed into the hidden input field it becomes

    How can I convert a string to boolean in JavaScript?
  • JavaScript の 関数名.caller は微妙だ - ksmakotoのhatenadiary

    function hoge(x, f) { if (x === 1) { caller = hoge.caller hoge(2, function () { document.writeln(caller); document.writeln(hoge.caller); }); } else { f(); } } hoge(1, null); ↓実行結果 null function hoge(x, f) { if (x === 1) { caller = hoge.caller; hoge(2, function () {document.writeln(caller);document.writeln(hoge.caller);}); } else { f(); } }一見フレームにアクセスできてるように見えるけど、実はグローバルなオブジェクトの属性値が変化している (追記)argum

    JavaScript の 関数名.caller は微妙だ - ksmakotoのhatenadiary
  • subsetじゃない悲しい話 (JSON編) - 枕を欹てて聴く

    https://tc39.github.io/proposal-json-superset/ JSON編以外はありません. Edge case "JSON: The JavaScript subset that isn't Timeless" URL 2011-05-16 15:49:26 via PNBT このような記事が JSON: The JavaScript subset that isn't — Timeless つまり, LineTerminatorに\u2028 / \u2029が含まれない(JSON)ので, StringLiteralがうっかりJSONの方が許容範囲が広がってしまっているという話です. eval('"\u2028"'); // SyntaxError JSON.parse('"\u2028"'); // OK 自作ECMAScript Engine, lv5

  • メモ: U+2028,U+2029が含まれるJSONデータをeval関数を使ってデコードするとエラーになる

    Home»メモ»メモ: U+2028,U+2029が含まれるJSONデータをeval関数を使ってデコードするとエラーになる ※firefoxとwebkitで確認してます。 JSONを使ってデータをやり取りするととっても便利なのですが、最近それでハマったのでメモ。 UNICODEには、改行文字がいろいろと定義されているみたいです。 UAX #13: Unicode Newline Guidelines その中の”LINE SEPARATOR (U+2028)”と”PARAGRAPH SEPARATOR (U+2029)”を含む文字列をJSONデータとしてデコードする際にeval関数を利用すると構文エラーが発生し、うまくパースできません。 テストコードはこんな感じ。 var plain_data = "{data: 'plain-data'}"; var ls_data = "{data: '

    メモ: U+2028,U+2029が含まれるJSONデータをeval関数を使ってデコードするとエラーになる
  • Test-Driven JavaScript Development - prog*sig

  • Taberareloo + upload from cache - 枕を欹てて聴く

    というわけでversion 2.0.13にて, Taberarelooにupload from cache相当を実装しました. 結果, ある種のreferer checkを行うserviceの画像がTumblrにpostできたり, なにより, screen captureの結果がHatena Fotolife以外のTumblrにpostできるようになりました!(上図) これで手軽にscreen captureを撮ってtumblrにuploadできますね. Chrome Web Store - Taberareloo upload from cacheは実装されないのかと言われてきましたが, なんというか技術的に可能になったので実装しました. 楽しいですね! 正確にはcacheからuploadしているわけではないのですが, 一応これでどうでしょうか? なんかダメなserviceとかあったら,

    Taberareloo + upload from cache - 枕を欹てて聴く
  • CSS3なライブラリxcss.jsを作ってみました - ?D of K

    GitHub - ofk/xcssjs デモ(オリジナルはCSSでアイコンをデザイン - Hail2uのDesign icon with CSS) デモの結果はオリジナルと同じでよく分からないかもしれませんが、CSSが違います。xcss.jsを読み込むとベンダープリフィックスは記述不要です。 つまり、どういうことかというと .rotate10 { transform: rotate(-10deg); } とCSSで書いておき、xcss.jsを読み込むと、 .rotate10 { -moz-transform: rotate(-10deg); -webkit-transform: rotate(-10deg); -o-transform: rotate(-10deg); -ms-transform: rotate(-10deg); } というCSSを動的に追加するライブラリです(実際はブラウ

    CSS3なライブラリxcss.jsを作ってみました - ?D of K
  • KeySnailプラグイン開発の方法とデバッグ

    KeySnailついて 自分はEmacsユーザーでもありませんが、KeyConfigの代わりにKeySnailを使い始めました。 そもそもKeyConfigとは役割違うし、KeyConfigもFirefox4対応したので併用しています。 keysnailはuserChrome.jsのキー特化みたいな存在で、便利なAPIがある環境みたいなとらえ方でもいいかもしれないです。(emacsのキーバインドは一切使わないで、まっさらな状態で始めました) KeySnailのプラグイン開発について JSReferenceというMDN(MDC)やECMA-262 3rd EditionをKeySnailのプロンプトから検索できるプラグインを書いたので、これに沿って説明していきます。 こんな感じの動作するやつです。(フルスクリーンで見た方がいい) 端的に言えばChemr-jsみたいな感じでインデックスをキャッ

    KeySnailプラグイン開発の方法とデバッグ
  • ECMAScript for XML (E4X) 仕様邦訳

    この文書は ECMA-357 ECMAScript for XML (E4X) Specification 2nd edition を訳者 (nanto_vi) が私的に訳したものであり、Ecma International またはその他の関連団体・個人とは一切関係ありません。 この文書は正規の仕様ではありません。正規の仕様に関しては Ecma International から PDF で公開されています。 翻訳の内容については保障しません。この文書の利用によって発生したいかなる損害についても訳者は責任を負いません。 翻訳上の誤りなどがあれば訳者 (ブログまたはメール <nanto (at) moon.email.ne.jp>) までご連絡ください。 Standard ECMA-357 2nd Edition / December 2005 序文 2002 年 6 月 13 日、BEA S

  • JavaScriptで/.*/()とは何か. - プログラムモグモグ

    最初に, 皆さんにブラウザーのコンソールで/.*/()を試していただきたい. そして, 他のタブとか色々試して欲しい. どんな文字が返ってきましたか? 多分一意じゃないはず. バラバラ. ワケが分からないよ. そこで, このエントリーを思い出した. (前にも見たことあった...) typeof演算子から学ぶJavaScriptのデータ型の概念と関係する考察のまとめ(id:sandai) 「というわけでデフォルトでexecメソッドが呼び出されるようになっています。」 そうなのか...execなのか. ECMA-262のどこに書いてるのかは分からないけど(←あ...) まあいいや. /.*/.exec()ってなることは分かった. ....function is not a functionの解説はこのエントリーに任せるとして... .execに引数がない場合どうなるのか? 挙動から見てみて明ら

    JavaScriptで/.*/()とは何か. - プログラムモグモグ
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • JavaScript で配列の結合を "+" で書きたい - mooz deceives you

    JavaScriptで配列の結合を”+”で書きたい. が大変面白かったので. (function () { var cache = {}; function getUID() { var id; while (true) if (!cache.hasOwnProperty(id = Math.random())) break; return id; } Array.prototype.valueOf = function () { var id = getUID(); cache[id] = this; return "#" + id; }; String.prototype.toArray = function () { return this.split('#').reduce(function (acc, id) { return id.length && cache.hasOwnP

  • JavaScriptで配列の結合を"+"で書きたい. - プログラムモグモグ

    やりたいことはタイトルのとおり. 要はオーバーロードしたいお... ※※※※ こういう願いは既出であること間違いないっ, ※※※※ よってここに書いてること, あるいは ※※※※ さらにエレガントな事がどっかに書かれてるかもしれないっ!!! とりあえずECMA-262を読んでみる. [p.74] 11.6.1 The Addition operator(+) 読むのがめんどくさいが, 要はReturn the String that hogehogeか, ToNumber(左辺)とToNumber(右辺)の和を返すことしかできない. オーバーロードとかできねーーーー (配列を返せない) んじゃ, 汚いけど, String介してやればいいか...??? > Array.prototype.toString = function(){return this.join(',') + ','} [

    JavaScriptで配列の結合を"+"で書きたい. - プログラムモグモグ