昨日の続きです。昨日の記事がまったくデタラメだとさすがに気まずいので、Invoke が呼ばれてるよ、という事実ぐらいは確かめようと思いました。私はバイナリアンではないのですが、がんばってMSHTMLの中を追ってみることにします。 まず、C++からIDispatch::Invokeを呼んだ場合と、Javascriptから window.document を参照した場合の2つの処理が合流するところを探しました。 ↑ここです。 スタックの中を覗くと、引数が見えます。 window.document の dispid(呼び出したいメソッドのID)である0x47fが確認できます。 では、ここにブレークポイントを仕掛け、amachangのハックをしない状態で、以下のコードを実行してみます。 alert(document); するとブレークポイントがヒットします。 dispid は 0x47f なので、
amachang史上最多のブクマ数をマークした例のwindow.documentの高速化に関して、便乗してちょっと書いてみようと思います。 基礎知識 ブクマコメントで 2007年10月11日 b:id:staki vbやった事ある人なら自然に沸く発想だったりする。理屈も同じなんじゃなかろうかと妄想。五倍ってのは中々無かったけど。 * と指摘されているのは、たぶんCOMまわりの事だと思います。御存知のように、Windowsはシステム内のあらゆる部品をCOM(Component Object Model)オブジェクトとして実装しており、IE内のxxElementやDocument、Window、そしてIE自身もCOMです。 で、javascriptでよくやる window.document という操作も、(amachangのテクニックを使っていない場合は)COMを通して行うことになります。この
Debugbar is an IE (Internet Explorer) web development bar, divided in a toolbar and a sidebar. It aims to help you debugging your website faster or to analyse quickly any web page. The Toolbar The toolbar is a the top of the IE browser. This bar contains several features to ease your debug session: Customize the DebugBar Check for updates Alert on javascript errors A must one: send page screenshot
またAjaxianから。 http://ajaxian.com/archives/ies-memory-leak-fix-greatly-exaggerated IEがやってる事はonunloadでDOMを辿って循環参照してる所を消してるだけ。 なので、DOMツリー上にないelementが循環参照していた場合はやっぱりリークする。 実例。 http://grimpoteuthis.org/example/spew.html 4つほど事例があるけど、動的に作成したelementをappendChildしてないとか、または明示的にelem.parentNode.removeChild(elem)してるとかで、DOMを辿っても循環参照しているelementにたどり着けないようになっている。 上の例のような、動的にelementを作っておいてappendChildしないコードを書くことはあんまり無
Looking for information about Informa TechTarget products and services? The commercial homepage has moved. Visit Informa TechTarget News 29 Jul 2025 / Software Design & Development What Amazon Q prompt injection reveals about AI security Experts say a malicious prompt injection in the Amazon Q extension for VS Code doesn't represent a fundamentally new threat, but reflects how AI amplifies securit
IEでHTMLElement.prototypeっぽい動作するものを考えているなかで生み出された副産物です。document.styleSheetsのaddRuleとbehavior:expressionをつかってdiv要素のheaderクラスに所属するidをアラートしています。 <html> <head> <style id="behavior"></style> <script> function showElementId(e){ alert(e.id); e.style.behavior = null; }; window.onload = function(){ document.styleSheets.behavior.addRule('div.header','behavior:expression(showElementId(this));'); }; </script>
デバッグに役立つかもしれないライブラリ 公開 : 2006-01-15 更新 : 2006-01-16 License : Same as Perl See also : http://www.bigbold.com/snippets/user/ma.la サンプル ダイアログはダブルクリックで消えます。 Firefoxだとeval系の行番号が正確に出ません 伝家の宝刀 Null またはオブジェクトではありません IEだと外部jsファイルのエラーを補足できません 使い方 debug.js debug.css ie_xmlhttp.js ファイルを保存してheadタグの中にこんな感じで貼り付ける。 <link rel="stylesheet" href="debug.css"> <script type="text/javascript" src="ie_xmlhttp.js"></scri
javascriptで循環参照するようなコードを書くとメモリリークするIEのバグが、6月のWindows Updateで直ってるそうだ。 Ajaxian » IE Memory Leaks Be-gone http://ajaxian.com/archives/ie-memory-leaks-be-gone 確かに、KBでメモリリークが直ったような事が書いてある。 http://support.microsoft.com/kb/933566/ http://d.hatena.ne.jp/zorio/20060316/1142528060 で書いたコードで試してみた。 普通に循環参照:http://zoriolab.info/leaktest1.html クロージャ使用:http://zoriolab.info/leaktest2.html 毎月WindowsUpdate後にスナップショット
IE7を強力にカスタマイズできるアドオン「IE7pro 0.9.12」が27日、公開された。IE7pro.comから無償でダウンロードすることができる。 IE7proは、IE7をより使いやすくすることができるアドオン。マウスジェスチャーや、プロキシスイッチ、ダブルクリックでタブを閉じる、といった機能に加え、「スーパーマウスジェスチャー」と呼ばれる機能がついている。これを使うと、Web上のリンクをドラッグ&ドロップするだけで、リンク先を新しいタブで開くことができるようになり、かなり便利だ。また、反転表示させた文字をドラッグ&ドロップした場合は、その文字を自動的にGoogleで検索してくれる。 今回のバージョンアップではGreasemonkey(グリースモンキー)に似た機能として「User Script」が搭載された。GreasemonkeyはFirefoxの人気拡張機能の1つで、Java
デジタル著作権保護技術のテルテンは3月26日、企業サイトや個人ブログ上の画像、テキスト、フラッシュやシステム管理側ページに至るまでインターネット上のコンテンツを不正使用から保護できるサービスを2007年5月から開始すると発表した。 同サービスは、企業、個人が安全に情報を発信できる環境をHTML内に独自のJAVAスクリプトを設定できるシステム。閲覧者は、ページ印刷、画像テキストのコピーペースト、ソースの閲覧、プリントスクリーン、保存機能など、ページの閲覧以外の行為ができなくなる。 同サービスは、同社がマイクロソフト社の最新テクノロジー「ActiveX」を基に開発し、2007年1月26日に発売した、インターネット上のコンテンツ、プログラムの保護を可能にする「WebShell(ウェブシェル)」の技術を応用したサービス。 サービスの導入は、ページ単位で可能。個人ユーザーへは無料、企業サイトに対して
Fiddler2は Proxy 型の HTTP デバッガで、送受信のルールを JScript で柔軟に記述することで様々なカスタマイズができます。例えば、IE では止めにくい Referer も、Fiddler のルールをカスタマイズすることで簡単に止めることができます。手順は次のとおり。 まず、Fidller の "Rules" メニューから "Customize Rules..." を選択すると、メモ帳で "CustomRules.js" が開かれるので、以下のように記述します。 class Handlers { //この2行を追加 public static RulesOption("Disable Referer") var m_DisableReferer: boolean = false; //これより下は元のまま。 public static RulesOption("Hid
これらをダウンロードして組み込み、ホスト上で動かすと動作しない。いや、正確には動作したりしなかったり、だ。何がトリガーとなって動作するかがわからない。 一応、最小構成で動作させると動いた。 そもそも、FlashとJavaScript間で直接通信するのはExternalInterfaceというらしく、これが働いていないおかげで、結果としてFlashのストレージが機能していないようだ。 というわけで幾つか策を練ってみた。検証には3ブラウザで動作したsave2localを使用する。Flashのバージョンは全て9.0.16.0だ。 DOMの汚染 真っ先に思いついたのがコレ。特殊なアプリに組み込んでいるから動作しないのではないか? そこで、最小構成で動作するページを用意し、そのページをIFrameで呼び出し、 document.getElementById( id ).contentWindow.s
All Microsoft Microsoft 365 Office Windows Surface Xbox Deals Support Software Windows Apps OneDrive Outlook Skype OneNote Microsoft Teams Microsoft Edge PCs & Devices Computers Shop Xbox Accessories VR & mixed reality Phones Entertainment Xbox Game Pass Ultimate Xbox Live Gold Xbox games PC games Windows digital games Movies & TV Business Microsoft Azure Microsoft Dynamics 365 Microsoft 365 Micro
I presented my Brighton Ajax workshop yesterday. It all went rather smoothly. The workshop was in the same swanky building as the Clearleft office so I felt like I was playing on home turf. The homely feel was emphasised with the choice of snacks: Jessica was kind enough to bake up a whole batch of cookies for the workshop attendees. The cookies were a big hit. During the workshop, I discussed the
IE(確か5からある気がす)とOpera(8で確認)は document.scripts というものがあります。これってdocument.getElementsByTagName('script')で取得できる奴と同等(まったく同じではない)です。まぁfxにはないけど…(fxでも対応させられるけど…) <html> <head> <script id="foo"> alert(document.scripts.length); // 1 alert(document.scripts[0].id); // foo </script> <script id="bar"> alert(document.scripts.length); // 2 alert(document.scripts[1].id); // bar </script> </html> これを利用すると document.sc
Windows版 IE 5.5以降の CSS 「AlphaImageLoader」で 24BitアルファチャネルPNGを表示する 前回は、SVG ActiveXプラグインを経由する方法でしたが 今回は、基本的にプラグインは不要です。 Internet Expolorer 5.5から DirectX機能が 大幅に強化された事は、Webデザインを勉強されている人は、多分ご存知でしょう。 今から行う方法は、DirectX機能の AlphaImageLoader を使って 24BitアルファチャネルPNGを透過させます。 解説は、まず下の画像を見た後で...。 8Bitグレイ + Alpha-Chanel PNG (IMG) 22.1KB Windows IE だと全く背景に透けていません。 Netscape 6以降や、Moziila、Safari、Mac IE 5では、背景に透けて見えます。 8
インストールされているプラグインを判定する JavaScript QuickTimeやFlashプラグインが、インストールされているかを判定するコード、を、Google Code Searchから切り貼りした。 function checkPlugin(mimeType, comNames){ comNames = [].concat(comNames); if(navigator.userAgent.indexOf('MSIE')==-1){ return !!navigator.mimeTypes[mimeType]; } for(var i=comNames.length-1 ; comNames[i] ; i-- ){ try{ new ActiveXObject(comNames[i]); return true; }catch(e){ } } return false; } 実
Firefox2.0では、WHATWGのWeb Application1.0仕様の一部である、Client Side Storageを実装しています。FirefoxのClient Side Storageには、セッション中のみデータが有効で同一ドメイン間のみアクセスできるSession Storageと永続データ管理が可能でクロスドメインでデータにアクセスすることもできるGlobal Storageがあります。 これにより、IE5以上とFirefox2.0以上で永続データ管理が可能になりました。どうせなら同じAPIで使用したいのでFacadeデザインパターンを使用し、カプセル化したいと思います。 Client Side Storageデモ その前に、Firefox2.0sessionStorageとglobalStorageについて。 sessionStorage sessionStora
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く