- ベストアンサー
マスターページ使用時のJavascript
- マスターページ使用時のJavascriptで再生ボタンが機能しない理由とは?
- マスターページでのJavascript使用時に再生ボタンが機能しない問題を解決する方法
- マスターページを使用したJavascriptで動画再生ボタンが正常に動作しない理由
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
えーと、 対応する MasterPage の ConetntPlaceHolder がどの位置にあるのか不明ですが、<body></body>内部にあるのであれば、ブラウザによってはスコアの高い js が順次解釈となって、関数定義の順序が問題になることがあるかもしれません。 関数定義をリテラルにして、明示的に宣言順を明確にするか、<head> 部に ContentPlaceHolder を作って、<script> 部分を全部そちらに移すのがいいと思いますが。 <head> <title> <asp:ContentPlaceHolder runat="server" id="PH_Title" /> </title> <asp:ContentPlaceHolder runat="server" id="PH_Head" /> </head> <body> <asp:ContentPlaceHolder runat="server" id="PH_Main" /> </body>
その他の回答 (1)
- shockatz
- ベストアンサー率80% (153/191)
うーん、変ですね。 ASP.NETでMasterPageを使用している場合でも、Javascriptの実行はあくまで、合成されたHTMLがサーバでレンダリングされた後なので、生成されたHTMLとJavascriptに違いがなければ、同様に実行されるはずです。 ただ、WebFormsなどでは、ViewStateに大量の遷移データが入ったり、postbackなjavascriptが生成されたりと、オーバーヘッドの大きいHTMLが出来ていますので、その分でJavascriptのDOM要素解釈が遅れる可能性もあります。 HTMLですと、クライアントキャッシュが読まれているケースもあり、オーバーヘッドに気付かない場合もありますので、 1.ブラウザキャッシュをすべて消去してHTML版を実行 2.Master/Contentを使わない「フラット」なaspxで動作を確認 1・2で動作が正常なら、「フラット」なaspxと「Master/Content」なスキームで、生成されるHTMLがどこが違うのか検証する という流れを取ってみてください。
お礼
ありがとうございます。 検証しながらやってみます
補足
回答ありがとうございます。 ConetntPlaceHolder はBodyにあります。 ただ、上記スクリプトを下記のようにマスターページのHEAD内に移しても 減少が改善されません。 通常のhtmlページで確認すると、headに書いても、bodyに書いても問題なく実行されるので 理由が分かりません。 もし、お気づきの点があれば教えて頂けると助かります。 <%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage2.master.cs" Inherits="MasterPage2" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script type="text/javascript"> function preview() { var fileData = document.getElementById("file").files[0]; if (fileData.name != "") { tryVideo(fileData); } } function tryVideo(file) { if (!/video/.test(file.type)) { return alert('videoぢゃない'); } if (!/probably|maybe/.test(video.canPlayType(file.type))) { return alert('再生できる動画ファイルぢゃないyo'); } video.src = URL.createObjectURL(file); } function playVideo() { video.play(); } function pauseVideo() { video.pause(); } </script> </head> <body> <form id="form1" runat="server"> <div> <asp:ContentPlaceHolder id="ContentPlaceHolderContent" runat="server"> </asp:ContentPlaceHolder> </div> </form> </body> </html>