私とIE

最新15件を表示します。このリソース群の時系列順リストタイトルリスト、またこのリソースのAtom表現RSS1.0表現も参照できます。

IEではてなスターが表示されなかった

はてなスターを設けたとあるHTML文書について、FirefoxやOperaでははてスタのアイコンが現れるのにIEだと現れないという問題が発生した。あれこれ試行錯誤してみたところ、どうやら<textarea name="comment"><dl id="comment">が原因のようだった。IEはName属性とID属性を同じ名前空間で管理しているのかな。多分それが理由で、getElementById("comment")を実行すると先に現れるTextarea要素にマッチしてしまっていた模様。

と思ったけど、もしかしたら、Name属性値とID属性値を同じ空間で管理するのはまっとうな挙動で、OperaやFirefoxは同じIDがあったら後に出てくる要素を優先しているだけなのかもしれない。これについては詳しく調査する必要があるような気もする、というかID属性の値とかもっと考えてコーディングしていれば今回のような問題は発生しない。

タグ
IE

OperaのXMLパーサってすごかったのね

OperaにXMLファイルを読ませるとベタテキストが出てくる。フィードだと「新規購読」というダイアログが出るけれども、画面に表示されるのは容赦ないベタテキストだ。IEやFirefoxにスタイル情報のないXMLを渡せばドキュメントツリーを表示してくれるのと対照的で、どうもOperaはXMLにやる気がないのかと勝手に思っていた。

だが、整形式でないXMLを投げた場合、Operaのエラー表示が圧倒的に見やすいことに最近気づいた。たとえば、以下のようなXMLをブラウザに表示させてみる:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <hoge>あああ</hoge>
    <hoge>いいい
    <hoge>ううう</hoge>
</root>

Firefoxだと:

XML パースエラー: タグの対応が間違っています。終了タグが必要です: </hoge>
URL: file:///D:/test.xml
行番号: 6, 列番号: 3:

</root>
--^

IEだと:

XML ページを表示できません 
XSL スタイル シートを使用した XML 入力は表示できません。エラーを訂正してください。 [更新] ボタンをクリックするか、または後でやり直してください。 


--------------------------------------------------------------------------------

終了タグ 'root' が開始タグ 'hoge' と一致していません。リソース 'file:///D:/test.xml' の実行エラーです。ライン 6、位置 3

</root>
--^

どちらも、6行目に問題があると言ってくる。だが、では</hoge>を追加しようとしても、いったい何行目のhoge要素が閉じられていないのか分からないのだ。でもOperaは違う。

エラー!
XML の解析に失敗しました

XML の解析に失敗しました: 構文エラー (行: 6, 文字: 0)

HTML ドキュメントとして再解析する
エラーmismatched end-tag
仕様http://www.w3.org/TR/REC-xml/
  1: <?xml version="1.0" encoding="UTF-8"?>
  2: <root>
  3:     <hoge>あああ</hoge>
  4:     <hoge>いいい
  5:     <hoge>ううう</hoge>
  6: </root>

と、何行目のhoge要素のせいで6行目のエラーが発生したのかを強調表示で教えてくれる。これは6行しかないから目視で分かるけど、インデントなしで千何行もあったら人間の仕事じゃなくなるわけで、Operaのこの挙動は大変ありがたい。

Xercesも

[Fatal Error] :6:3: The element type "hoge" must be terminated by the matching end-tag "</hoge>".

にとどまる。何行目のせいで整形式になっていないのかをちゃんと教えてくれるパーサってOperaくらいなのかなー。

ちなみに、不正なXMLにも対応しているパーサでこういうXMLを読ませると、以下のようになる。

CyberNeko HTML Parserの場合は (以下mainメソッドが例外をスローしてたりXMLをStringから読んでいたりしてやる気のないソースなので注意):

package net.txqz.test.xml;

import java.io.IOException;
import java.io.StringReader;

import org.cyberneko.html.parsers.DOMParser;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

public class NekoTest {
    public static void main(String[] args) throws SAXException, IOException {
        String xml = "<?xml version='1.0' encoding='utf-8'?>\n<root>\n<hoge>あああ</hoge>\n<hoge>いいい\n<hoge>ううう</hoge>\n</root>";
        DOMParser parser = new DOMParser();
        parser.parse(new InputSource(new StringReader(xml)));
        Document document = parser.getDocument();
        NodeList nodes = document.getElementsByTagName("hoge");
        for(int i = 0; i < nodes.getLength(); i++){
            Node node = nodes.item(i);
            System.out.println(node.getNodeName()+":"+node.getTextContent());
        }
    }
}

出力結果は:

HOGE:あああ
HOGE:いいい
ううう

HOGE:ううう

ShaniXmlParserの場合は:

package net.txqz.test.xml;

import java.io.IOException;
import java.io.StringReader;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

public class ShaniTest {
    public static void main(String[] args) throws SAXException, IOException, ParserConfigurationException{
        String xml = "<?xml version='1.0' encoding='utf-8'?>\n<root>\n<hoge>あああ</hoge>\n<hoge>いいい\n<hoge>ううう</hoge>\n</root>";
        System.setProperty("javax.xml.parsers.DocumentBuilderFactory","org.allcolor.xml.parser.CDocumentBuilderFactory");
        System.setProperty("javax.xml.parsers.SAXParserFactory","org.allcolor.xml.parser.CSaxParserFactory");
        DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();

        Document document = builder.parse(new InputSource(new StringReader(xml)));
        NodeList nodes = document.getElementsByTagName("hoge");
        for(int i = 0; i < nodes.getLength(); i++){
            Node node = nodes.item(i);
            System.out.println(node.getNodeName()+":"+node.getTextContent());
        }
    }
}

出力結果は:

hoge:あああ
hoge:いいい
ううう
hoge:ううう

Jericho HTML Parserの場合は:

package net.txqz.test.xml;

import java.io.IOException;
import java.io.StringReader;
import java.util.List;

import au.id.jericho.lib.html.Element;
import au.id.jericho.lib.html.Source;

public class JerichoTest {
    public static void main(String[] args) throws IOException {
        String xml = "<?xml version='1.0' encoding='utf-8'?>\n<root>\n<hoge>あああ</hoge>\n<hoge>いいい\n<hoge>ううう</hoge>\n</root>";
        Source src = new Source(new StringReader(xml));
        List<Element> list = src.findAllElements("hoge");
        for(Element element : list){
            System.out.println(element.getName()+":"+element.extractText());
        }
    }
}

出力結果は:

hoge:あああ
hoge:
hoge:ううう

Jericho HTML Parserは w3c DOMを使わずに独自の形式でHTMLやXMLをパースするのだけれども、不正なXMLもパースできるのがウリなのにこの方法で「いいい」を抽出できなかった。やりかたが悪い? いやまぁ整形式でないのが一番悪いのですが。ほかのパーサも「いいい」だけ抽出するのは不可能で、「いいい」と「ううう」がセットになる。それは、パーサがこの適当なXMLのDTDを知らないから当然の処理。HTMLで<ul><li>あああ<li>いいい<li>ううう</ul>とかなっている場合は、HTMLパーサと名乗っている以上li要素の暗黙の終了タグをちゃんと補完してくれることでしょう。

あと、いま知ったのだけれども、XML宣言ってversionを必ず最初に指定しないといけないのね。encodingを先に指定したら[Fatal Error] :1:23: The version is required in the XML declaration.とXercesに怒られた。Xerces厳しすぎワロタと思ったら仕様[23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'って書いてあった。ふつうXMLの属性は登場順序に意味がないので、宣言もそうだと思い込んでいた。いまさらー。

XMLはツリー表示されることを規定しないのでOperaはCSS初期値で表示してる(cf. http://kuruman.org/old_diary/200608#D19-01 )。パースエラーの開始箇所候補を挙げてくれるのはありがたいよね。

なるほど。やっぱりはOperaすばらしいですね。

タグ
IE

ブラウザ依存カコワルイ

カトゆー家断絶経由で経産省が IE でしか読めないページとか Windows でしか使えないシステムとかをオススメしないガイドラインを出すという話。さすが経産省。先輩からのメッセージ2年前の9月に読んで以来この省は他とは一味違うとずっと思っていた。 Blog もやってるし。

特定のソフトウエアに依存する状況とは,具体的にはInternet Explorerでしか読めないActiveXコントロールを使用したページや,Windows用のクライアント・アプリケーションしか提供していない電子申請システムなどだ。

とりあえず、Javascript が無効でも支障なく閲覧させてほしいなと思った。

電子自治体ポータルによると経産省のサイトは17の中央省庁中11位。まだまだぽい。特に基本構造と視覚障碍者への配慮。

タグ
IE

IE のバグのおかげで CSS 動画

Black Box 経由で WinIE でアンカーにマウスを持っていくと position : relative; なブロックが逃げるという話。バグを利用した動画はかなりワラタ。これダメ方向に応用できるなぁ。

コメント欄経由で別の動くボックステスト

タグ
IE

安全な IE が欲しかったら

なんくるないさぁ~(´ー`) 経由で安全な IE は XP への有料アップグレードでという話。そんなことするくらいなら別のブラウザ使いますから! 残念!! ということで IE 以外のブラウザを作っている関係者さんは今もなおチャンスですので頑張ってください。

タグ
IE

IE に透過 PNG を正しく表示させる技

Linkage Note! 経由で IE に透過 PNG を正しく扱わせる技IE に CSS2 を解釈させるためのパッチプログラムのように htc ファイルを作って云々というものなのらしい。

タグ
IE

ニフティ伊藤氏 RSS について講演

駄文にゅうす経由でニフティの伊藤氏が RSS について講演したという話。

伊藤氏はまずはじめに「“1日に100サイトを巡回してください”と言われたら、みなさんどうしますか」との問いを参加者に投げかけた。

実は WWWCアンテナ優秀なタブブラウザがあれば RSS が無くても1日100サイト巡回は何とかなったりする。今、 WWWC に76サイト、アンテナに166サイト (実際は更新頻度の高い上位120サイトくらい) を登録して日々巡回しているけれども、結構何とかなる。タブブラウザ様々だと思う。

実は最近 RSS リーダーは使っていない。なんか RSS リーダーの画面じゃなくてそれぞれのサイトの画面を見ないと巡回した気にならないというか。半分以上は RSS を提供していないサイトだからどうせ二度手間になるとか、云々。まだまだモアベターな RSS リーダーを探して彷徨い中。

駄文にゅうす経由でギコナビとかちゅーしゃを RSS リーダーにする Web サービス。でもどちらも使っていないので使えない。

駄文にゅうす経由でIEにできてタブブラウザにできないこと

タグ
IE

信州大学製 P2P ソフト

RinRin王国経由でP2Pファイル共有ソフト MARIE 。なんかすでに剛毛ファイルとかいろいろ共有されている。

タグ

IE 開発者の blog

おふらいんver2経由で IE の開発者が書いているらしい Blog が酷いことになっているという話。 <meta content=".Text" name="GENERATOR"> なんてあって、何かいかにも WORD で作りましたって感じのソースになっているわけだが、 .Text ってどんなジェネレータなんだろう……っていうかこれは blogs.msdn.com の機能なんだろうな。何が面白くてこんな面倒くさいソースを出すことにしたのか。

そのブログのトラフィックにマイクロソフトが苦慮しているのらしい。無駄なソースが転送量を圧迫しているんじゃないかとか。ものすごくシンプルなソースにしたら転送量が半分になったりして。あと gzip を導入して……これじゃ8月騒動だ。

タグ
IE

IE コンポーネントのブラウザを使っている身としては

IE は今すぐ窓から投げ捨てろ」と北村さんによるまとめ。本当はこれ昨日書いたことなのだけれども、どうもうまく纏まらないので率直に。

やっぱりなんか上手く書けないのでしばらくコメントアウトしときます。 XML から HTML に変換するときにコメントノードは落ちてしまうのだけれども。

同盟までできたのらしい。まぁゲイツが個人的にむかつくとか分かるけれども、「同盟」を作るのはどうなのよ。

「同盟」という言葉も「ネチズン」という言葉も「プロ市民」という言葉も、元は真っ当な意味だったのに、変な文脈で使われ続けた結果語感が変わってしまった。まぁ変わっても良いんだけど。

俺ヘッドライン経由でWebブラウザ徹底比較(1)

積ん読。経由で Internet Explorer is Evil!

Repose space 経由でIEとMozillaのエンジンを切り換えられる「Lunascape 2.0」の話。これさえあれば IE エンジンの呪縛から逃れられるかも。

タグ
IE

IE を滅ぼすって?

ITmedia の紹介記事は煽りまくりで、なんか胡散臭いのだけれども、一応 MyIE2 なるブラウザはメモしておこうと思った。あー中国語と英語とフランス語からしか選べないのか。まぁいいけど。試すのは明日以降。

「MyIE2はIEコンポーネントのタブブラウザだと聞きました。MyIE2の素晴らしさを紹介する記事だとは分かっていますが、『IEを滅ぼす』は言い過ぎではないでしょうか。IEが滅びたらMyIE2も滅びます」(強調は編集部)。

だってさ。まったく。

タグ
IE

IE6.0 で CSS2 がちゃんと適用されるようになるパッチ

スピリッツオブゼロ@blog 経由で Internet Explorer 7 (Standards Compliant)IE に CSS2 を解釈させるためのパッチプログラムなのらしい。これは確かに役立つパッチのだけれども、自分の見ている IE の整形結果と、他の大多数の人が見ている IE の整形結果が違うということにもなってしまうから、どうなのなかぁと。 サーバーサイドでも OK なので、上のは全く的外れのことでした。

ちなみに、峠の珈琲屋スタイルの n09.css は IE6 が対応していない CSS2 のプロパティは使っていないので安心【謎】。闇の太直線スタイルの n03.css は;

.guide a:visited:hover, .NavigationArea a:visited:hover
{
  border-right: solid 1em #636;
}
.guide a:link:hover, .NavigationArea a:link:hover
{
  border-right: solid 1em #339;
}

の部分だけ IE6.0 は解釈してくれないけれども、それ以外はまぁおおよそだいたいオーケー。

えと、パッチという言い方で若干誤解が……。

確かにそうですよね。訂正しておきました、というか上にある通り、これを書いたときはほとんど何もわかっていなかったような感じが今読み返してみるとひしひしと。

タグ
IE

何から何まで国ぐるみ + 機械翻訳

ー`)<淡々と更新し続けるぞ雑記。ωもみゅもみゅ経由で「金正日」と入れると自動的に太文字になる北朝鮮のワープロの話。

知ったのは11日だけど、ついでに。Excite の日中翻訳で「キムジョンイルの馬鹿」を簡体字モードで日本語に翻訳させる【謎】と、官吏を平らにして乳の群れおよびにごり酒にまたくくるように責めるという謎な訳語が表示させるという小ネタ。英日翻訳だったらカタカナを翻訳させてもそのままそのカタカナが返ってくるのに。

あと「韓国人」をやはり簡体字モードで日中翻訳させると〓弊害か?などと出てくる。当然「?国人」の翻訳結果は「韓国人」になるので、&#38889; の字 (?) はともかく &#38867; の字 (韓) をプログラムが何かと取り違えているということになるのかな? あと残りの「国」と「人」はどういう処理を受けているのだろう。

ザイーガ経由で日中翻訳させると変なのがでてくるフレーズ特集

絵文録ことのは経由でExcite エキサイト翻訳の「珍訳」対応表

タグ

文字サイズを変えるとレイアウトが崩れる

現行の推奨スタイルであるところの n03.css は、MSIEにおいて、文字サイズ中では普通だが、最大にするとレイアウトが若干崩れることが発覚したけれども、該当箇所に{ font-size: 100%; }を指定して解決

タグ
IE

ネタが大きくなっていく

ほかんこ板(旧秋子28歳)で、美汐16歳さんが伊勢湾岸道24キロを紹介して下さいました。この企画自体、遅すぎたエイプリルフールネタだったりしますが、まぁ伊勢湾岸道が全線開通する頃にはまともなものになっているでしょう。両端で幹線と繋がれば、今のような閑散とした殺伐な雰囲気は無くなるので、その頃にもまともなものになるかもしれません。

それとは多少関係ない話だが、伊勢湾岸道24キロで擬似フレームを作成する際、どうすれば一番良いのかが分からない。bodyのスクロールを禁止してメニューをoverflow:auto;にすると、Mozillaでホイールスクロールが出来なくなるし、Operaでややひどいことになるかも。かといってメニューをpositiion:fixed;にすると、画面サイズが小さいときに下のほうが切れる。また、IEで壊滅的なことになりかねない。

あと、実は下のほうに某方面へのリンクが並べてあったのだが、そうすると、上にある「コンテンツ」とか「はじめまして」とかの背景色が文字のあるところまでしか付かなくなった。あと、長い英単語が含まれていると、ものすごく無茶苦茶な表示になった。ので今はコメントアウトしてある。まだちゆ12歳のISO移植は遠い話である。

タグ
IE
© 2001-2010 Chisa YOUZAKA. Some rights reserved.