私は次のコードを持っていますabc.jsp
<%
out.write("<script type=\"text/javascript\" src=\"scripts/test.js\"></script>");
out.write("Here is filename"+sfl);
out.write(""
+ "<input type=\"button\" id=\"playBt\" value=\"Play Now\" onClick=\"playSound()\" >"
+ "<audio id=\"sound\" preload=\"auto\">"
+ "<source src=\"music.ogg\" type=\"audio/ogg\" />"
+ "<source src=\"music.mp3\" type=\"audio/mpeg\" />"
+ "Your browser does not support the audio element."
+ "</audio>"
);
out.write("");
%>
次に、上記のコンテンツがフレームに取り込まれましたindex.jsp
<iframe id='bgframe' style='display:compact;' src='abc.jsp' width="400" height="200"></iframe>
この JavaScript 関数が使用されるようになりました -test.js
function playSound() {
var frameRef = document.getElementById('bgframe');
var sound = frameRef.contentWindow.document.getElementById'sound');
//var sound = frameRef.contentDocument.document.getElementById('sound');
sound.play();
}
問題は、再生ボタンをクリックしても音が再生されないことです。JavaScript コンソールでは、システムは の値として null を返しますframeRef
。contentDocument
また、 と のどちらを使用するかによって、次のエラーが発生しますcontentWindow
。
Uncaught TypeError: Cannot read property 'contentDocument'
Uncaught TypeError: Cannot read property 'contentWindow'
さまざまなソリューションを実装しましたが、キャッチされない typedef エラーが残ります。
ここで何が間違っているのか、どうすれば修正できますか? frame の要素にアクセスできないのはなぜid=bgframe
ですか?