A delightful language with friendly error messages, great performance, small assets, and no runtime exceptions.
Stoyan (@stoyanstefanov) is a Facebook engineer, former Yahoo!, writer ("JavaScript Patterns", "Object-Oriented JavaScript"), speaker (JSConf, Velocity, Fronteers), toolmaker (Smush.it, YSlow 2.0) and a guitar hero wannabe. HTML5 introduces custom data attributes: non-visible pieces of information associated with a DOM node. This is an extremely convenient feature, especially since these attribute
This is a public service announcement. element.textContent and document.createTextNode are dangerous DOM methods. They can easily lead to XSS vulnerabilities in your application. We’ll find out how by looking at two common – but flawed – applications of these methods: stripping and escaping HTML. Stripping tags with element.textContent What does element.textContent do? (element.innerText in old IE
たとえばドキュメント生成ツールなんかを作ってると、HTML をプログラムの中で生成したい!ってことは良くあると思います。でも、そのためにいちいちテンプレートエンジンを使うのは大げさな場合も多いですよね。たとえば、ちょっとリストを出力するとき。以下のような感じのコードを書いたことがある人は多いと思います。 std::string mylistToHTML(const std::vector<std::string>& list) { std::string r("<ul class=\"mylist\">\n"); for (auto i = list.begin(); i != list.end(); ++i) { r += std::string("<li class=\"mylist-item\">") + escapeHTML(*i) + "</li>\n"; } r += "</u
JavaScript でアニメーションを作る アニメーションとは何? ビューを少しずつ回転、拡大縮小、移動、変色などを行い、連続的な動きを作る こんな感じ <div id="view">hoge</div> <script> var el = document.getElementById('view'); el.style.opacity = 1; setInterval(function() { el.style.opacity -= 0.01; }, 10); </script> なんで、あんな感じの書き方になるの? setInterval の意味が分からない こんな感じで書けないの? <div id="view">hoge</div> <script> var el = document.getElementById('view'); el.style.opacity = 1; w
Thanks! Please check your inbox to confirm your subscription. If you haven’t previously confirmed a subscription to a Mozilla-related newsletter you may have to do so. Please check your inbox or your spam filter for an email from us. smaug The right link to the spec is http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#mutation-observers Also, the API will be un-prefix very soon. We want to
Bug 651072 - Support HTML parsing in XMLHttpRequest per XMLHttpRequest Level 2 Nightlyに入ったー function getDocument (aURL, aCallback) { var xhr = new XMLHttpRequest; xhr.open("GET", aURL, true); xhr.responseType = "document"; xhr.onreadystatechange = function() { if (xhr.readyState === xhr.DONE /* 4 */ && xhr.status === 200) { aCallback(xhr.response); } }; xhr.send(null); } getDocument("http://www.ex
The project I've been working on in Mozilla's research group is dom.js: an implementation of the browser DOM in JavaScript. I've gotten much of the core DOM 4 document tree functionality implemented, and have started on DOM features defined by the HTML spec. One of those features is the innerHTML property. And to implement it, I need an HTML parser. So I dove in and implemented one. Here are some
連載目次 従来、JavaScriptでは、以下のようなメソッドを利用して、操作対象の要素を特定していた。 getElementByIdメソッド:IDの値をキーにノードを取得する。 getElementsByTagNameメソッド:要素名をキーにノードを取得する。 getElementsByClassNameメソッド:class属性の値をキーにノードを取得する。 しかし、この方法で複雑な構造のHTML文書から要素を取り出す場合、コードが複雑になりやすいという課題もあった。例えば、以下は従来のgetElementXxxxxメソッドを利用した要素の取得例だ。 上記のJavaScriptコードでは、奇数番目の要素を特定するために全てのインデックス番号をif文で判定させている。ほかにも属性値やclass属性によって要素を絞り込むならば、同じような判定式を書いた経験が読者諸氏にもあるだろう。「もっと簡
来月はキャプテン・アメリカ見るし、気が付いたら年中アメコミ映画を見ているminamiです。 来月にはまた大きな発表がいろいろありそうなiPhone界隈ですが、iPhoneサイトのコーディングをする際につまづいてきたポイントを挙げてみました。 [HTML] input type="file"は使えない 画像をアップするコンテンツだからフォームに input type="file" を・・・と考えがちですが、iPhone版のSafariでは使用不可です。 [HTML] <meta name="viewport" content="user-scalable=no">が効かない 最近ハマったポイントです。ユーザーに画面の拡大をさせなくすることができるviewportのuser-scalableプロパティですが、本体のアクセシビリティ設定で「ズーム機能」をオンにしているとバッチリ拡大できてしまいま
必要に迫られて引数で渡された文字列から HTMLDocument を動的に作成するコードを書いたので紹介します。このコードはchromeコンテキスト上で、つまり拡張上で動作させることを前提としていますのでご注意ください。 下記コードを書く際にmodestで紹介されているnanot_viさんのサイトを参考にしました。またrange.createContextualFragment()実行時のセキュリティ上の課題を克服するためにkazさんのblogを参照させていただきました。 let getDOMHtmlDocument=function(str){ let doc; let range; if(document.implementation.createHTMLDocument){ // Firefox 4.0から doc=document.implementation.createHTML
<pre> var x = <root> <list>hoge</list> </root>; for (var i=0; i < x.*.length(); i++){ hogehoge(x.*[i]); } </pre> とか基本エスケープせずに書きたい。 ついでに 文頭、文末の改行のみの部分は削除しておきたい 先頭のインデント部分の空白部分は削除しておきたい <pre><![CDATA[> var x = <root> ... ]]></pre> CDATAセクションにする 最初の>は vim のシンタックスハイライトが変になるのを回避するため function onload() { stripSpace(); } function stripSpace(){ var pres = document.querySelectorAll("pre"); var indent = 0; f
先日「jQuery の紹介」と題して、職場(情報システム部門)向けのプレゼン資料を作成する機会がありました。うちの職場では「新技術紹介」という名目で、隔週でプレゼンを行うという決まりがありやむなく作ったものです。(資料の内容自体は、大量にブクマした記事から jQuery の紹介文の部分だけをコピペして作った手抜き資料ですが・・・) はじめはパワーポインタで作ってた資料ですが、jQuery の紹介で jQuery のプレゼンツール使わないのもどうかなと思いプラグインを探しはじめましたが、例のごとくなかなか IE6 にもやさしいやつを見つけられずに・・・(会社の標準ブラウザは未だに IE6 なんです) そんな訳で、結局自前で作ることになった jQuery ベースのプレゼンツールを紹介致します。 機能概要 html モードとプレゼンモード html モード(普通の html ページの表示)とプレ
というわけでやってまいりましたこのコーナー! 本日のお題は「Selection内のHTML Textをいい感じに取得する - 枕を欹てて聴く」でございます。選択範囲のHTMLソースを抜き出すというやつですね。では早速いってみましょう! if(src.focusNode){ // selection まずは HTML5 テキスト選択 API の Selection オブジェクトが登場! 以後これに対する操作が続きます。しかしこの Slection オブジェクト、getRangeAt メソッドを使うとなんと選択範囲に対応する DOM 2 Traversal and Range の Range オブジェクトが取れちゃうんです! // common parent node search (以下 21 行省略) それ Range#commonAncestorContainer で取れるよ! // c
昨日の記事 http://d.hatena.ne.jp/da-yoshi/20100722/1279811055 に対してコメントいただきました。 http://d.hatena.ne.jp/da-yoshi/20100722/1279811055#c1279857804 window.onhashchangeというそのものズバリのイベントハンドラがあるのですね。 IE8については、HTML5だけではなく、XHTML1.0やHTML4.01の標準モードでも動作しました。Firefox3.6でもChrome5でもSafariでも動作しますね。これなら十分採用できます。ちょっと簡単なHTML書いてみました。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loo
TOPICS Programming , Mobile , HTML/CSS , JavaScript 発行年月日 2010年08月06日 PRINT LENGTH 208 ISBN 978-4-87311-461-3 原書 Building iPhone Apps with HTML, CSS, and JavaScript FORMAT Objective-Cを使わなくてもWebアプリケーション開発の標準技術でiPhoneアプリケーションを開発できます。本書ではパソコン向けWebアプリケーションをスタート地点に、CSSのカスタマイズ、jQueryの利用、jQTouchを利用した高度なアニメーション、PhoneGapを使ってネイティブアプリケーション化することでiPhone固有の機能を使う方法、そしてApp Storeへの登録に至るまで、HTML+CSS+JavaScriptによるiPh
APIやRSSなどを提供しているサイトは、情報を簡単に扱うことができますが、例えば Yahoo!の検索結果とか、mixiのニュースとか、あるサイトの一部を取り出したいことってよくあります。(とはいえ、著作権違反には注意 そんな時、PHPのライブラリである「htmlSql」を利用すると便利。このライブラリに、ファイルでもURLでも文字列でも、HTMLで作られたものなら何でも与えると、解析して取り出しやすくしてくれます。しかも、その取り出し方はSQL! 例えば、「id属性が’test’の p要素の内容を取り出したい」という場合には、次のようなSQLを使います。 SELECT text FROM p WHERE $id=="test" 超パワフル。ということで、これを CakePHPで利用するためのテクニック。 まずは、ダウンロードしたファイルの中から次のファイルを「app/vendors」フォ
As I have been experimenting with HTML5's new features (SQLite, Cache Manifest, Offline Application Cache), I've started to build up a vision in my head of some very cool mobile web applications for my iPhone. In particular, I'm in love with the idea of creating a rich, offline web client for my Dig Deep Fitness web application. Ideally, I would like people to bookmark the Dig Deep Fitness applica
The Google Chrome web browser is slowly growing in popularity. This is no surprise, as it is a great browser, and is backed by no other than Google. It also provides great tools for web developers and I find myself using it more and more (actually Firebug is the only thing keeping me from crossing to the other side). With the introduction of extensions, Google Chrome became even more agile and pow
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く