読者です 読者をやめる 読者になる 読者になる

htsign's blog

ノンジャンルで書くつもりだけど技術系が多いんじゃないかと思います

JavaScript

はてブ見ててどのコメントにスター付けたかよく忘れるので

GreaseMonkeyスクリプトを書きました。 gist.github.com 使うと自分が付けた星は点滅するようになります。 以上。

全てのフレームを対象にするには

某大手工業系企業の新規開発プロジェクトに参画しているのですが、非常に悲しいことに社内ポータルが未だにフレームを使用したサイトなのです。 フレームを使うと容易にペインで分けたサイトを構築できるため、実用重視のエンタープライズ界隈で重宝されるの…

リンク化スクリプト

かねてからHatena::Let で公開 *1 していて、個人的にもかなり使っているスクリプトをGreaseMonkey用に書き直したのでそれも公開してみます。 https://gist.github.com/htsign/5eed5473a9e75c7c45f3a5571d7d0803/raw/convertTextToLink.user.js GreaseMonkey…

以後は特に指定のない限りJSはES6記法で書いていこうと思います。

Intlオブジェクトというものを知りました。 国際化表記における各種変換を取りまとめるそこそこ大規模なオブジェクトらしい。 Collator DateTimeFormat NumberFormatの3つのサブオブジェクトを持つ模様。 それぞれインスタンス化して使用するっぽい。 (() =>…

Microsoft Edge (Windows 10 Mobile) のUser-Agent

なかなかすごいことになっています。 どこかの記事(確かスラド辺り)で読んだことありますが、WebKitと同じ挙動を示すようにしたとかなんとか。Lumia 950で確認しました。 Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWeb…

BookLiveで今まで使ってきた金額を出すスクリプト書いた

いやー久しぶりにJavaScript書いたわー。 (function(d){var s=d.createElement("script");s.src="//dl.dropboxusercontent.com/u/414379/www/BookLivePaid/script.js";d.body.appendChild(s)})(document) 一時期Amazon.co.jpで使った額を調べるスクリプトが…

今更Brainf*ckインタプリタ

何番煎じだよって感じのネタ。 まぁ、JavaScriptの練習ですね。https://dl.dropboxusercontent.com/u/414379/www/brainf_ck/brainf_ckInterpreter.html素地自体はあっさり作れたんですが、細かいところをアレも気になるコレも気になるってな感じでちょこちょ…

IEスキーとして一言物申したい

Web開発に必携の「Google Chrome デベロッパーツール」の便利ワザ10個まとめ*二十歳街道まっしぐら を読んで、うん!WebkitのDevTools便利だよね!でもそれほとんどIE11のF12 開発者ツール(以下、開発者ツール)でもできるよ!!って言いたかった。 わざわ…

DOM弄り

仕事中息抜きに書いてた。 文書の元々のソースコードと実際の表示が違うというのをやってみたかった。ちなみに文書を読み込んだ時点で文書型は決まってしまうので、あとからDOCTYPE書き換えても意味ないです。https://dl.dropboxusercontent.com/u/414379/ww…

スーパーpre記法で書いたコード部分に行番号を出すようにした

こんなコードをフッタに入れた。 <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> <script> jQuery(function($){ $("pre.code").each(function(){ var df = document.createDocumentFragment(); var ol = $('<ol>').appendTo(df); $.each($(this).html().split("\n").filter(function(e, i, arr){ return i !== arr.…</ol>

IEの開発者コンソールで見るテキストノードについて

IEの開発者コンソールで var textNodeIterator = document.createNodeIterator( document, NodeFilter.SHOW_TEXT, function(node){ return /^\s*$/.test(node.textContent) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP; }, false); textNodeIterat…

Ancia向けのCSSエディタ書きました

まだ中途半端な実装だし暇があればまだ改良するつもりだけど、ひとまず公開。 ここに置いておきます。

UserExtension for Ancia

以下のスクリプトは軽量Webブラウザ「Ancia(アンシア)」向けのものです。 公式サイト: 名称未決定 - FrontPage 特定のURLで自動的に発動するタイプ nicosearch.jsinstall2013/12/04 niconicoの検索窓にサジェスト機能を付与します。 visibleExtIcon.jsinst…

Surface重量計算機

ありそうでなかったっぽい(もしかしたら検索力不足かも)ので作りました。 自分が調べたかったので、そのついでです。 (function(global){ var catalogue = [ { name: "Surface RT", type: "gen1", weight: 680 }, { name: "Surface Pro", type: "gen1", we…

DOMParser と XMLSerializer

DOMParserは覚えてるけどXMLSerializerをしょっちゅう忘れちゃうのでメモ。 var parser, serializer; var input, output; var dom; input = '<div id="test"><p>hogehoge</p></div>'; parser = new DOMParser(); try { dom = parser.parseFromString(input, "text/html").getElementById(…

テキストをパースして要素に追加する処理比較

有名なのはinnerHTMLですね。 ただ、これ以外にもテキストを評価してDOMツリーに追加する方法がありますので、今回はこれをやってみました。単純にループで同じメソッドおよびプロパティ操作をしているだけです。 試行回数は1000回ですが、これはinnerHTMLの…

はてなダイアリーでキーワードポップアップ

Greasemonkey用スクリプト「キーワードポップアップ」の配布について - はてなダイアリー日記ずいぶん昔の記事ですが、はてなさんはこんなの出してたんですね。 これを他のブラウザでも動くようにちょちょいと改造しましたよっていうのが今回のエントリ。 詳…

マルチメディア要素へのリンクのクリックイベントに<audio>や<video>なウィンドウをポップアップする機能をオーバーライドするブックマークレット

たぶんこれで完成形。比較的新しいAPIをフル活用しているので、動かなかったらそんなブラウザを使っている自分が悪いと思ってください。 一応IE10とChrome26で動作を確認しています。 Firefox20ではちょっと確認した限り動作しませんでした。まぁFirefoxはク…

MIMEタイプがaudio/xxxやvideo/xxxなときにやをどうにかこうにかするスクリプトを改造した

以前書いたのは<a>の直後にエレメントを追加して直接ページ上で再生するやつだったけど、今回のはwindow.openを使って子ウィンドウを作るタイプにした。こっちの方がスタイルシートの影響範囲をいちいち考えなくて済むから楽かもしれない。audio/xxxやvideo/xxx</a>…

MIMEタイプが audio/xxx か video/xxx なファイルをで直接参照していた場合にやを直後に追加するスクリプト

あっちの界隈でよくあるADV*1なんかだと、公式サイトのキャラ紹介にmp3なファイルが直接置かれている場合が少なくありません。 特にIEさんやFxさんはこの手のものに出会うと、デフォルトでは一旦DLしてローカルの別のアプリケーションで再生する、という挙動…

【修正版】httpやttpやtpなリンクのないURLにリンクを付けるありきたりなスクリプトを回りくどいコードで書いた

前回載せたスクリプトのバグ修正が完了したので再掲。原因はなんとなくだけど検討ついたので、とりあえず書き換えてみたら見事正常に機能するようになりました。 while ((regRes = pattern.exec(self.textContent)) !== null) { var a = document.createElem…

httpやttpやtpなリンクのないURLにリンクを付けるありきたりなスクリプトを回りくどいコードで書いた

主に自分で使う用に。 よく出回ってるようなコードは "簡素だけどDOM標準は無視" というのが多かった(大体innerHTMLをreplaceしてる)ので、ならばと自分で書きました。 (function(){ // Rangeが使えなければ意味が無いので、ここで一旦判定をしています。 …

一部の記号を使わずにゾンビウィンドウを作ってみる

今日、仕事でWindowsCEを搭載した電話機を触ってた。 ブラウザ機能があって、IE5.5か6相当のレンダリング機能を有したWeb体験を提供してくれる。で、筐体が電話機なもんだからキー入力がとても辛い。ガラケーよりキツい。 その上記号が全然打てない。 具体的…

JavaScriptだけでUser-Agentを偽装してWebページを取得する

初めに、IE9以上でしか動きません。 しかもバグ持ちで、ページによっては画面が真っ白になることがあります。 同じスクリプトを2回実行すると直る可能性あり。ちなみに Google News でテストしました。ということで、スクリプトです。 (function(){ if (docu…

がある場合の対処

超適当に書いた。 下のコードに特に意味はない。 (function(wnd){ var frms = wnd.frames || wnd.document.frames, len = frms.length; if (len>=1) { for (var i=0; i

ゾンビウィンドウ

誰でも一度は作ったことがある <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"> <head> </head></html>

久しぶりにJavaScript書いてた

IE10、Googleトップページで試したんだけど、 document.removeChild(document.doctype); で一旦本来の DocumentType を削除して、 var doctype = document.implementation.createDocumentType( "html", "-//W3C//DTD HTML 4.01 Transitional//EN", null); do…

jQueryのような $ を使えるようにするスニペット作ってみた

jQueryの $() 関数はすごく便利です。 prototype.js にも似たようなのがありますが、使ったことがないので割愛。ともあれ、jQueryのアレを使うような感じで $ を使えるようにするスニペットを書いてみました。 var $ = function(str, target){ if (typeof st…

insertRuleメソッドについて

HTMLStyleElement の sheet プロパティは常に存在するわけではないらしい。 var s = document.createElement("style"); // この時点ではまだ存在していない console.log(s.sheet); // ==> null s.sheet.insertRule("#hoge{box-shadow:1px 1px #333;}", 0); /…

Rangeオブジェクトの速度に対するちょっとしたテスト

同じ個所に複数のノードを追加する場合でも、 なぜかRangeオブジェクトで範囲とって一気に追加するよりもinsertBeforeメソッドの方が全体的に速かったみたいです。 内部的な処理は少ないと思うんだけどなぁ…。なんか悲しい。 var doc = document; var hoge =…

window.open で生成した DOMWindowオブジェクトのDOCTYPEを指定する

完全に趣味の範囲ですが…。下記コードで使われることになる document.implementation ですが、主要ブラウザはほぼ対応しています。 ただしIE8のみDOMImplementationは存在しているのに、メソッドがないという謎な状況になっています。 // wnd に DOMWindowを…

キャレット位置を指定するメソッドを作った

正直今更感がすごいけど、自分用メモとして。 HTMLTextAreaElement.prototype.setCaret = HTMLInputElement.prototype.setCaret = function(pos){ if (this.tagName.toLowerCase()==="input") { if (this.type!=="text" || this.type) return this; } var le…

iOS端末でデバッグするためのブックマークレット

iOSに限らず、モバイルOSのWebブラウザってものすごくデバッグに不向きですよね。 一応iOSのMobile Safariには「デバッグコンソール」というモノがありますが、 アレは主にJavascriptのエラーを検出するのが目的のもので、デザインがうんたらには役に立ちま…

スニペット的な

備忘録として。 頭に0を付けて指定の文字数にするっての、結構手間取ったのでいろんな情報を元に自分なりのメソッド作ってみた。 これ見て助かる人がいれば幸い。 // p 桁のゼロパディングを行うメソッドを追加 Number.prototype.zPad = function(p) { // 与…

ビット演算による小数の整数化

http://d.hatena.ne.jp/babydaemons/20110629/JavaScript_without_Math_floor_function を読んでなんとなくやりたくなったのでやります。ご存知の通り、Javascriptでもビット演算はできます。 一般にビット演算は通常の四則演算よりも高速だと思われますので…

またもやブックマークレット作った

初めてコンストラクタ・クロージャに手を出した習作ですが、割と本格的なコードになってきたのではないかなと思ってます。 javascript:(function(){var d=document,s=d.createElement("script");s.type="text/javascript";s.charset="UTF-8";s.src="http://d…

文字数カウンタを改造してみた

先日地味に公開してたアレ(d:id:htsign:20111116)をちょっと弄って外部CSSで読み込んでたスタイルをJS内で毎度指定するようにした。 処理的にはちょっと手間増えたけど、見た目全然変わらないレベル。 むしろCSSを別途読み込まないことで若干呼び出しが早く…

今日もブックマークレット作った。

作った自分で言うのもなんだけど、これ結構便利。 javascript:(function(){var%20d=document,s=d.createElement("script");s.type="text/javascript";s.charset="UTF-8";s.src="http://dl.dropbox.com/u/414379/script/addStrLengthCheckDiv.js";(d.getEleme…

キタコレURL短縮うんたらを使うブックマークレットを改造してみた

実は生まれて初めてjQuery(というかライブラリの類)を使った。 javascript:(function(){var i=0,d=document,e=["http://code.jquery.com/jquery-latest.min.js","http://dl.dropbox.com/u/414379/script/shortenwktkjQ.js"];for(;ijavascript";s.charset="…

wk.tk で閲覧しているページのURLを短縮するブックマークレット作ったよー (^o^)ノ

2ちゃんねるのスラングに由来した短縮 URL「wk.tk」が登場 - インターネットコム を見て。 javascript:(function(){var elm=document.createElement("script");elm.type="text/javascript";elm.charset="UTF-8";elm.src="http://dl.dropbox.com/u/414379/scr…