サイクルコレクションが消えたぞ
なんで遅いのか丸わかりなんだね。
SVGの要素はXPathで直接指定できないらしい
そうなのかー。 name()で指定するなら問題ないらしい。
以下サンプルコード
<button id="button1" >/html/body/div/p</button> <button id="button2" >/html/body/svg/text</button> <button id="button3" >/html/body/*[name()='svg']/*[name()='text']</button> <div> <p>hello world1</p> </div> <svg xmlns="http://www.w3.org/2000/svg"> <text x="0" y="20"> hello world2 </text> <text x="0" y="60"> hello world3 </text> </svg>
document.getElementById("button1").onclick=button1Func; document.getElementById("button2").onclick=button2Func; document.getElementById("button3").onclick=button3Func; function alertTextContent(xpath){ var result = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null); if(result.singleNodeValue == null){ alert("xpath failed!") }else{ const text = result.singleNodeValue.textContent; alert(text) } } function button1Func(){ alertTextContent("/html/body/div/p"); } function button2Func(){ alertTextContent("/html/body/svg/text"); } function button3Func(){ alertTextContent("/html/body/*[name()='svg']/*[name()='text']"); }
実行結果も貼っておきます。 jsfiddle.net
ASP.NET WebAPI
ASP.NET WebAPIを試した。
上の記事に従ったら問題なく出来た。
プロジェクトのテンプレートはWebAPIもあるんだけど、そっちはテンプレートの中身が複雑なのでEmptyテンプレートにWebAPIのチェック入れて作るのが良いと思う。
以下気になった点
(1)Getメソッドの戻り値の型
コントローラーにGetメソッドを記述すると該当URLのGetが使えるとかそんな感じ。
Getメソッドの戻り値の型はstringでも何でも良いらしく、ASP.NETの方で勝手にJSONにシリアライズしてくれる?
ただ、普通のシリアライズと同じようにクラスに[DataContract]属性をつける必要がある。
(2)URLのクエリパラメータとGetメソッドの引数の関係
Get(int id, string message)と書いたらクエリパラメータをどう書けば引数に放り込んでくれるのか。
WebAPIConfigのrouteTemplateに/{id}/と書いてあるとそれを読み取って自動的にidに放り込んでくれる感じだろうか?
クエリパラメータにmessage=helloを入れとくとやっぱり自動的にmessageのところに放り込まれていた。
そういうもんか。
(3)クロスドメイン問題
IISでWebAPIを立ち上げて、FirefoxやChromeからローカルでXMLHttpRequestを使ってAPIを実行させるとドメインが違うといわれてエラーになる。
これだとデバッグがしにくいのでドメインが違っても実行できるようにしたい。
下の記事見てコントローラーにEnableCors属性をつけたら実行できるようになった。
ローカルのoriginがわからなかったので何でも受け入れてくれる"*"で妥協。
ASP.NETを発行した
IISにASP.NET MVCをデプロイ
Windows ServerのIISにASP.NET MVCをデプロイしました。
Visual StudioでMVCのプロジェクトを作って発行→Webデプロイパッケージでzipを作る。
zipをWindows Serverに移動してIISマネージャー→アプリケーションのインポートでzipをインポート。
ブラウザで該当URLを開くと上の画像が出て確認終了。
これだけなのだけど、途中いろいろと苦労した。
(1)アプリケーションのインポートの項目が出てこなかった。
これはWeb deployをインストールすることで表示されるのですが、私はamd版のやつを間違えてインストールしてたので表示されていませんでした。
(2)該当URLを開くと403エラー。
MVCが起動していなかった?サーバーマネージャーから機能の追加でASP.NET 4.5をインストールしたら動きました。当然だ。