
vs2012 c#で作成しています。
下記のjavascriptをマスターページを使用したContentPlaceHolderID何に記述し、
playボタンを押すと、再生されません。
(正確には再生直後にリロードが発生しているように見えます)
通常のhtmlページでhead内に書くと問題なく再生できるのですが、
なぜこうなるのか教えて下さい。
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage2.master" AutoEventWireup="true" CodeFile="test3.aspx.cs" Inherits="test3" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolderContent" Runat="Server">
<div>
<input id="file" name="file" type="file" onchange="preview()" class="form-control" />
</div>
<div class="flex-video widescreen" style="margin: 0 auto; text-align: center;">
<video id="video" class="videoUiWrapper thumbnail" controls loop muted preload="auto" ></video>
</div>
<div>
<button id="btnPlay" onclick="playVideo()" class="btn btn-primary">play</button>
<button id="btnPause" onclick="pauseVideo()" class="btn btn-primary" >pause</button>
</div>
<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>
</asp:Content>
No.1ベストアンサー
- 回答日時:
えーと、
対応する 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>
この回答への補足
回答ありがとうございます。
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>
No.2
- 回答日時:
うーん、変ですね。
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がどこが違うのか検証する
という流れを取ってみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript プログラムがうまく動きませんレビューお願いします 1 2022/07/10 05:08
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルに張り付けた写真のフ...
-
スイッチが二台あり、別々のア...
-
vba 空のデータをSplitする時の...
-
Windowsで複数のファイルを同じ...
-
高校1年生情報の問題について。
-
VBAでPDFを作成する際、同じ名...
-
VBAでPDF作成をしたあと、指定...
-
C#からvbsを実行したい
-
【VB.NET】Excelの最終行までの...
-
LINE APIからasp.net の web サ...
-
VB.NET Excelを読み込んでDataT...
-
入力フォームのテキストボック...
-
Windows10にデュアルブートでXP...
-
連想配列を配列に格納したいで...
-
onedrive にexcelファイルをア...
-
お世話になります。 Windows Up...
-
【VB.NET】for each文からのINS...
-
”KINGSOFT WPSのVBエディタ画面...
-
マクロで同じフォルダにある画...
-
asp.netにてgridviewの列を動的...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FullCalendar の複数月表示につ...
-
Selenium4でボタンをクリックで...
-
マスターページ使用時のJavascript
-
FullCalendarについて
-
親ページからスクロールバー表...
-
background をフェードしながら...
-
Javascriptを使ってQRコード読...
-
jQueryで外部テキストファイル...
-
SQLのmaxで求めた値を変数に代...
-
JavascriptからPHPへのAjax通信...
-
JavaScriptでtabindexの変更っ...
-
カンマ区切りのデータを配列に...
-
[jQuery UI] sortableを使いaja...
-
jQueryのblockUIをformのボタン...
-
階層別の組織図の自動作成について
-
tableのtr要素をドラッグ&ドロ...
-
インラインフレームを自動更新...
-
JQueryでAjax通信をキャンセル...
-
Ajax サーバーに負荷かかります...
-
二つのbxsliderをレスポンシブ...
おすすめ情報