m2

javascript

オレオレ言語って言語拡張にも使えるかもね

例えば id:brazil さんが言ってる ヒアドキュメント。 <script src="heredocument.js"> var str = <<"END"; おにいさまおにいさまおにいさまおにいさまキスキス…ネコミミ!おにいさまおにいさま おにいさまや・く・そ・く・よ END alert(str); </script> heredocument.js はこんな感じ eval( (functi…

オレオレ言語 neko mimi Fu**♥

スクリプト http://miya2000.up.seesaa.net/neko_mimi_fuxx/neko_mimi_fuxx.js デモ http://miya2000.up.seesaa.net/neko_mimi_fuxx/neko_mimi_fuxx.html 参考(見た順) OreScript時代の幕開け - yukobaの日記 http://d.hatena.ne.jp/yukoba/20071108/p1 JS …

isNaN(' ')

知らなかった…。 alert(isNaN(' ')); // false alert(isNaN(' ')); // false alert(Number(' ')); // 0 alert(Number(' ')); // 0 通常、isNaN()関数は、parseFloat()やparseInt()の結果が無効な数値になっていないかどうかを調べるときに使用します。そのほ…

submit ボタンに「submit」という名前を付けないでください

大抵の場合、form 要素がある web ページで以下の bookmarklet を実行すると、 javascript:alert(document.getElementsByTagName('form')[0].submit) 以下のように HTMLFormElement の submit メソッドが表示されます。 が、input 要素の name 属性に「submi…

「内容に合わせて伸縮するテキストエリア」を Opera にも

元ネタ。 実用 - 内容に合わせて伸縮するテキストエリア http://d.hatena.ne.jp/brazil/20071004/1191432582 それ、Opera にも!*1 <script> fittingTextarea(document.getElementById('main')); function fittingTextarea(target){ var MIN = target.clientHeight; …

ブックマークレットの状態を保存する

ブックマークのものはブックマークに。IE6不可。 bookmarklet:javascript:(function main(data) {function save(obj) {prompt('これをブックマークしてください。','javascript:' + encodeURIComponent('(' + main.toString().replace(/\s*\r?\n\s*/g,'') + …

「Opera 9 にはバグがあって shift.apply(arguments) に失敗して、 arguments を壊してしまいます。」

しかし!現状の Opera 9 にはバグがあって shift.apply(arguments) に失敗して、 arguments を壊してしまいます。 ホントだ。知らなかった。 はてなダイアリーで JavaScript eval http://d.hatena.ne.jp/nitoyon/20070820/javascript_eval_on_hatena_diary …

はてなでマウスストーカー

IE不可。とりあえずOpera9&Fxでのみ確認済み。 2007/08/16 追記 IE6でも、まあ動きます。Safari は未確認だけど動いてるようです。Firefox が一番ちゃんと動きました。http://miya2000.up.seesaa.net/tmp/stalker3.xml - 以下のブックマークレットで解除でき…

とりあえずブログパーツテスト

はてなダイアリーに(対応外の)ブログパーツを貼る http://d.hatena.ne.jp/Hamachiya2/20070814/google_gadgets で、とりあえずいつものやつを書いた。 http://miya2000.opera.googlepages.com/test.xml <Module> <ModulePrefs title="test"> </ModulePrefs> <Content type="html"> alert(document.cookie…</content></module>

ソースを表示する bookmarklet

bookmarklet (Opera,Fx,IE7?): javascript:(function(){var A='appendChild',C='createElement',d=document,p=d.body[A](d[C]('p')),b=p[A](d[C]('button')),r=p[A](d[C]('pre')),x=new XMLHttpRequest();b.onclick=function(){d.body.removeChild(p)};b.inn…

僕がスクリプトを function で囲む理由

<script type="text/javascript"> return; // ← return できない (function(){ return; // ← return できる })() </script>

安全に eval

前々から「script要素に permission 属性があるといいなあ」と思ってるのだけどそれは置いといて。 「404 Blog Not Found - スーパpre記法で実行可能なJavaScriptを」のようにページ作成者が任意の JavaScript をページ閲覧者に実行させたいという欲求はある…

定規

(2007/05/07 短くしました) bookmarklet: javascript:(function(L){var d=document,i=0,a,b,A='appendChild',B='#000 solid 1px',C='createElement',D='margin:0;padding:0;background:transparent;font-size:10px;border:0;',U='px';a=d.body[A](d[C]('div'…

ドラッグ&ドロップでテーブルを並べ替え(DDSortTable)

Yahoo! UI Library (YUI) を使ってドラッグ&ドロップによるテーブルを並べ替えを実装しました。 ドラッグ&ドロップでテーブルを並べ替え(DDSortTable) http://miya2000.seesaa.net/article/39899726.html デモ http://miya2000.up.seesaa.net/ddsort/demo/…

prototype の解釈を間違ってました

僕はインスタンスに該当プロパティがなければコンストラクタの prototype プロパティの該当プロパティを参照すると思っていました。正確には"インスタンス化された時の"コンストラクタの prototype プロパティの該当プロパティを参照しているようです。 元ネ…

グローバルオブジェクトの参照はも function 宣言時に決まる

以前「window オブジェクトを汚さないネタ」で疑問に思ったので検証しました。 parent.html <html><head><title>Window テスト(Parent)</title> <script type="text/javascript"> window.name='parent'; function hello(){ alert('hello:'+window.name); } function openChild(){ var w=open('…</head></html>

子ウィンドウに親ウィンドウの CSS を継承させる

普通に考えればこんな感じ。 // 子ウィンドウを作成 var w=window.open('about:blank','hoge','width=800,height=600,location=yes'); var d=w.document; d.write('<html><head><title>'+document.title+' の子ウィンドウ<\/title><\/head>'); d.write('<body>'); /* (略) */ d.write('</body></head></html>…

style 要素を動的に生成する

普通に考えればこんな感じ。 var style=document.createElement('style'); style.setAttribute('type', 'text\/css'); style.innerHTML='…'; document.getElementsByTagName('head')[0].appendChild(style); が、IE6 では style 要素の innerHTML プロパティ…

window オブジェクトを汚さないネタ

user.js や bookmarklet を書く時は、元のページのグローバル関数や変数を上書きしないようにグローバルな領域を使わないようにするんですが、JSONP のような外部スクリプトと連携する場合はどうしても必要になります。それをどうにかして元のページの windo…

今後もドラッグ&ドロップを書かない人のために

ライブラリにしました。 dndsupport.jsデモ 前回のプログラムと違うポイントとして、 他のライブラリに依存しない safari も img を被せるようにした(効果があるかは不明) Opera8対応(古いシイラも同じ対策でいけるかも) なるべく軽量に ドラッグする要素と…

頻繁にDOM要素の内容を変える場合はレイアウトが変わらないように注意する(IE)

先日の「これからドラッグ〜」を家の低スペックマシンの IE6 で動かすと非常に重たかったので調査したところ、ドラッグ&ドロップ部分は全く関係なくて、ログ表示部分に問題があることがわかりました。 log: function(msg,e) { /* コメントアウトすると軽く…

やっちまったコード2

マウスカーソル弄っててハマったとこ。 var onNorth = false; var onSouth = false; var onEast = false; var onWest = false; var direction = onNorth ? 'n' : '' + onSouth ? 's' : '' + onWest ? 'w' : '' + onEast ? 'e' : '' ; alert(direction); // ??…

これからドラッグ&ドロップを書く人のために

2012/07/22 追記 久しぶりに確認したところ、IE9 では以下で指摘している IE (このときは IE6 でした) の問題(3, 4, 6)がすべて解消されていました。 また、Firefox での問題(5)も Firefox14 で試したらは解消されていました(ただ、All-in-One Sidebar のパ…

ちょっと勘違いしてた function a() と var a = function() の違い(JavaScriptのスコープの話)

両者は等価だと思ってたんだけど、実際はちょっと違うみたい。 javascript:(function(){ function a(){alert('a')} if(false){ function a(){alert('b')} } a(); })() 改行付き javascript:( function(){ function a(){ alert('a') } if(false){ function a(…

やっちまったコード1(続くのかよ)

function caller(args){ for (i=0;i<args.length;i++) { callee(args[i]); } } function callee(args){ for (i=args.length;i>=0;i--) { alert(i); } } caller([['hoge']]); 恥ずかしい。でもやりがち。 これに警告出してくれる開発環境なんてないかな?</args.length;i++)>

JavaScript で端末エミュレータエミュレータ

シェルスクリプトのネタがあってちょっと動作確認したいなーと思ったんだけど、手近に環境が無くて cygwin 入れるのもめんどくさい。そこで「JavaScriptで擬似端末書いちゃったら俺ってクールじゃね?」なんて妄想がはじまって「擬似ファイルシステムを作っ…

TinyURL のリダイレクト先をツールチップ表示する user.js

前に短縮URLの話をしたんだけども、どうしても短縮URLを開く前にそのリダイレクト先のURLを知りたいという方がいらっしゃるようなので、user.js を書きました。TinyURL のリダイレクト先をツールチップ表示 Opera、FFで動作。IEは面倒なので対応してません*1…

JavaScript で Marquee を実装

ホームページな方がマーキーを使ってキャッキャと騒いでいると、どこからともなくアレな人がやってきて「そんなのは JavaScript でやりなさい」*1というのをよく見かけたような気がするんですが、簡単に組み込めるサンプルなりライブラリなりが見つけられな…

prototype.js があるページで Array に対して for-in してはいけない

結果だけみればあたりまえ過ぎて恥ずかしいんだけど、今日 Opera の user.js(FireFoxでいうグリモン)書いててハマったのでメモ。以下のブックマークレットで確認できます。*1 javascript:(function(){var a=['a','b','c'];for(var i in a){alert(i+':'+a[i])…

Java プログラマから見た JavaScript

Java プログラマが理解しにくい JavaScript のポイント Java プログラマが JavaScript を理解する上で重要だと思っているポイントが2点ある。 this の理解 と クロージャの理解 だ。 ちょうど id:amachang さんのとこでその両方にかかるエントリーがあった…