toDataURL([type][, params]) type image/png か image/jpeg デフォルトは、image/png params type の値によって異なる image/png の場合は transparency=none (無透過?) image/jpeg の場合は、quality=n (画質) n は 1-100 で数字が大きいほど高画質でサイズが大きくなる
toDataURL([type][, params]) type image/png か image/jpeg デフォルトは、image/png params type の値によって異なる image/png の場合は transparency=none (無透過?) image/jpeg の場合は、quality=n (画質) n は 1-100 で数字が大きいほど高画質でサイズが大きくなる
Number.prototype.yakusu = function() { var result = []; var l = this + 1; for(var i=1;i<l;i++) { if(this % i == 0) { result.push(i); if(i != this / i) result.push(this / i); l = this / i; } } return result; } 返される値の順番がが気持ち悪いけど。 大きい数の素数の場合だとあんまりはやくないか。 実行例 var a=100 print(a.yakusu()); ---- 1,100,2,50,4,25,5,20,10 修正 1の約数が返らないのを修正。もういっ回修正。 こっちの方が良さそうです。 はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
selectbox.options.length = 0; こうすると、かなり速そうな気がする。 もしかしたら、コレはまったくもって普通のやり方かもしれない。 ただ、以下のようにしてみてるとわかるのだが、 var selectbox = document.createElement('select'); selectbox.options[0] = new Option("key", "value"); // 初期化のつもり selectbox.length = 0; selectbox.options[0] => <option value="value"> 実際には、参照が残ってしまっている。 したがって、おそらく GC に回収されないため メモリリークしていくことだろう。 delete とかすれば良いが、これでは面倒だ。 delete selectbox.options[0]; 追記
JavaScriptを書き始めるとき、いきなり*.jsやHTMLに書いたりするのではなく、大抵下記に試しに書いて実行してみます。 JavaScript Development Environment JavaScript Shell Web Development Bookmarklets 上記2つのブックマークレット版 JavaScript Shell は、補完機能なんかもあって高機能ですが、IE、Operaだとどうもうまく動きません。 JavaScript Development Environment は、ブックマークレット版じゃないほうはIE、Operaでも動くので、どちらかというとこっち使うときの方が多いです。(Operaでのエラー表示が出来てないみたいだけども…) ブラウザ上で簡単に試せるってのはすばらしいですね。 で、その後に*.jsやHTMLに書いて、後はFireBug使い
id:starocker:20060901:p1で紹介されている”たった1行のJavaScriptコードでInternet Explorerをクラッシュさせる方法”で昔同じようにクラッシュしたがことがあったのでそのときのコードのいくつかのサンプル。 紹介されているコード もっと短くなりますね。これ一瞬無限ループ(?-?)みたいに思えてこないでもないけど無限ループではないです。最近のブラウザは無限ループで落ちるようには設計されていないです。 for(w in document.write){ document.write(w); }; これもクラッシュします for(i in document.write); for(i in alert); for(i in print); 検証その1 種あかしはあとでするとしてまず以下のコードを実行してみます。 alert(document.write)
今も昔も大変よく使われている古典的JavaScriptの一つjavascript:history.back()なんですが、実際に戻る操作が成功したのかどうかを判別することができません。タブブラウザなんかを使っててミドルクリックで新規タブで開いてたりすると、history.backをクリックしても無反応で何も起こらない、なんてことよくありませんか? そんなわけなのでhistory.backを実行後にページ移動が発生しているかどうかを監視して、戻るに失敗したときに特定の処理を発生させることができるような関数を作ってみました。 function try_back(errback){ var bs = false; Event.observe(window,"unload",function(){bs=true}); Event.observe(window,"beforeunload",func
あえてsort関数を使う方法でシャッフルしてみる。比較関数自体がランダムな値を返す場合と違って、これなら偏らない。 Array.prototype.shuffle = function() { return this.map(function(a){ return { weight: Math.random(), value: a } }) .sort(function(a, b){ return a.weight - b.weight }) .map(function(a){ return a.value }); }とりあえずFirefox1.5でOK。IEでもmap関数を自分で定義してやれば大丈夫のはず。 置換によるシャッフルと違って、weight値のところを適当に変化させれば、要素ごとに重みづけてのシャッフルもできると思う。たとえばよく聞く曲は優先的に前の方に持ってくるとか、その逆と
■ テキストエリアとかリサイズ可能にする JavaScript 好評の、読み込ませるだけシリーズ の6番目。 このスクリプトを読み込ませるだけで、ウェブ上にある TEXTAREA とかその他色々好きな要素がリサイズ可能なやつに大変身。とりあえずサンプル見るのが手っ取り早いです。 実際の動作サンプル テキストエリアの右下にマウスカーソルを持っていくとカーソル形状がかわるので、そのままドラッグするとサイズも変わります。 自分はグリモンスクリプトで快適なんですが、サービス提供側でこういう機能を提供してくれたら幸せな人が増えるんじゃね?とか思ったので作ってみました。 実際のリサイズ方法に関しては、愛用している Changing <textarea> Size のコードが大変参考になりました。ありがとうございます。 コードは次の通りです。 メイン部分。 var ElementResizer = {
COLLECTION & COPYのそのリソースを訪問済みか判定するやHatebu Addictionなどで使われている既読チェック。これらとは違う、getComputedStyle()メソッドを利用して文字色を取得し訪問済みリンクの文字色かどうかをチェックという手法で既読チェックを実現している、Jeremiah Grossman: I know where you've beenというページを見つけた。FirefoxやSafariなどではこれで既読チェックが可能。 getComputedStyle()メソッドはstyle属性やJavaScriptで設定されたスタイル以外のスタイル情報をまとめて取得するメソッドで、ComputedCSSStyleDeclarationオブジェクトを返す。そして、ComputedCSSStyleDeclarationオブジェクトのgetPropertyVal
GM_setValue / GM_getValue + unsafeWindow.eval を使って 永続的に外部スクリプトを利用する方法を考えてみた。 わざわざ DOM で script要素 を毎回注入するよりも 速いんじゃないかと思う。 Greasemonkeyには、GM_setValue / GM_getValue というのがあって、 GM_setValue("キー", "値") 上記のように入力してあげる事によって、たとえ、 Firefoxを終了させたとしても消えないデータを作成する事が出来る。 そして、それを利用して、 初回のみ XmlHttpRequest で外部スクリプトデータを取得して、 GM_setValue でスクリプトデータを永続化しておき、 二回目以降は、それを GM_getValue して eval するようにした。 以下は、永続的に prototype.js を
複数行の文字列 JavaScript Javascript Boot Camp Tutorial \を行端に置くことで、文字列を複数行に分けて記述できることを知った。 IE、Forefox、Operaで確認をした。 alert("<html>\ <body>\ <div>\ </div>\ </body>\ </html>"); 文字列リテラル (String Literals) ECMA Scriptの仕様を読んでも難しく、このことが記述されているのか否か判断ができない。 『JavaScript』の文字列リテラルの項を読み直してみたが記述は見当たらず、これまで色々なコードを読んだが利用されている例に会わなかった。 追記 2006/8/7 nanto_viさんから、詳細な情報をコメントで頂きました。 こちらへ転載させていただきます。 いつも、いつも、本当にありがとうございます。 nanto
id:brazil さんのブックマークで知ったのだが、 Firebugには、便利な組み込み関数が定義されているようだ。 一通りさわってみたのだが、 $x() で 任意のXPath要素が取得できるのとかに感動した。 そして、やっぱりちゃんとドキュメント読むべきだなぁと思った。 XPathから要素を取得する。 $x("/html/body/h1"); -> 要素の配列が返ってくる。 selector名から要素を取得する。(getElementsByTagName) $$("h1") -> 要素の配列 所要時間測定 console#time, console#timeEnd time ~ timeEnd で囲んだ部分の所要時間を 計測することが出来るみたいで、 以下のような関数にまとめると良さそうだ。 function bench( callback ) { var uniq_id = Date
Shiubya.js #1で話したネタですが、Winkでデモを作ってみました。 http://la.ma.la/misc/demo/realtime_cssedit.htm エディタとブラウザが並んでて窮屈ですが、実際はこれを20インチワイド液晶縦置きデュアルでやります。 仕組みは、WEBrickでローカルプロキシを立てて、同名のファイルがローカルにある場合は内容を置き換えて表示する、というもので、CSSやJavaScriptを編集するのに向いています。 プロキシサーバーはPerlで書かれた同等のものがここにあります。 http://www.ornithopter.jp/archives/2006/05/perl_perl.html 自分が使ってるのは必要に応じて行き当たりばったりに拡張していったりするのですが、現時点でのソースを置いておきます。 http://la.ma.la/misc/
JavaScript には基本的にブロックスコープというものが存在しない。どうしてもブロックスコープを扱いたいときは function 式を使ったりする。 var a = 10; { var a = 20; print(a); // 20 } print(a); // 20 var a = 10; (function () { var a = 20; print(a); // 20 })(); print(a); // 10 だがやはりブロックスコープがあったほうが便利ということで JavaScript 1.7 では let 式、let 文、let 宣言が導入される。 var a = 10; let (a = 20) { print(a); // 20 } print(a); // 10 しかしこれでは対応するブラウザが Firefox 2 以降などに限られる。ところが、with 文とオブ
\閉鎖予定のサイトも売れるかも?/ アクセスがないサイトもコンテンツ価値で売れる場合も… ドメインの有効期限を更新してサイト売却にトライしてみましょう
GreaseMonkey では GM_xmlhttpRequest で他のページとってくるじゃないですか。で、onload して req.responseXML をとるなり req.responseText をとるなりするけど、どうにもこうにも not well-formed なページ (HTML とか) をとってきてノード検索するとき面倒くさいんですよ。responseXML はもちろん空だし、responseText はもちろんただのテキストだし。 で、なんとなく思いついたので以下のように解決するようにした。 GM_xmlhttpRequest({ method : "GET", url : i.href, onload : function (req) { // てきとーなエレメント作って突っ込む (ブラウザにパースさせる) var d = document.createElemen
center と ljust と rjust。 String.prototype.center = function (width, fillChar) { var str = '', fill = fillChar ? fillChar.substring(0, 1) : ' ', length = this.length; for (var i = length + 1; i < width; ++i, ++i) { str += fill; } return str + (width > length && (width - length) % 2 ? fill : '') + this + str; } String.prototype.ljust = function (width, fillChar) { var str = this, fill = fill
JavaScriptきしださん(id:nowokay)コメント、ストライクです。これだ、これだよー。0で前月の最終日だよ。 new Date(year, month+1, 0).getDate(); (found at Determining the Number of Days in a Month with Javascript) function daysInMonth(month, year){ return 32 - new Date(year, month, 32).getDate(); } これおしゃれやわぁ。日付をロールオーバーさせて基礎値から引くかんじ。日数の最大値より多ければ、32でも40でもいいんだな。 私が考えたのは、月初の前日の日を調べるやつで、Dateオブジェクトが無駄でした。 function getLastDateOfMonth(year, month
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く