我想在新窗口中打开音频控件并将文件名从 MVC5 View 传递给音频控件。
我可以在 MVC5 View 中使用以下代码打开一个简单的 html 页面:
<a href="Music/Music.html"
onclick="window.open('Music/Music.html',
'newwindow',
'width=600,height=200');
return false;">html Link</a>
然后 Music.html 页面使用以下代码加载并播放文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<audio controls>
<source src="001.mp3" type="audio/mp3"> audio playback requires IE9 or above
</audio>
</body>
</html>
这一切都很好,但我真的想将文件名传递给新页面,以便 src
加载我传递的任何文件名。我不知道如何做到这一点,或者是否有更好更有效的方法使用 MVC5 的其他功能来做到这一点。
根据 Joe Warner 建议的答案在原始帖子后添加:
此代码放置在 Home Controller 的 index.vbhtml 中:
@Code
Dim myUrl As String = "Music/Music.html?003.mp3"
End Code
<a href="@myUrl"
onclick="window.open('@myUrl','_blank','width=600,height=100');
return false;">
html link a
</a>
<a href="@myUrl" onclick="myOpenWindow">
html link b
</a>
@Section Scripts
<script type="text/javascript">
function myOpenWindow() {
window.open('@myUrl', '_blank', 'width=600,height=100').focus();
}
</script>
End Section
这是目标 Music.html 页面
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<audio controls>
<source src="" id="audio" type="audio/mp3"> audio playback requires IE9 or above
</audio>
<script>
document.addEventListener("DOMContentLoaded", function() {
document.getElementById('audio').src = window.location.search.substr(1)
});
</script>
</body>
</html>
对于 html link a
和 html link b
,目标 Music.html 页面加载并播放 003.mp3。但是 html link a
打开一个新窗口,html link b
替换现有窗口。
我确定我犯了一个基本错误,但为什么我不能将内联 window.open javascript 移动到一个函数中,以便它可以被页面上可能存在的其他元素调用?
最佳答案
<a href="Music/Music.html" onclick="openWindow">html Link</a>
将一个函数附加到单击然后使用“_blank”打开窗口,这将在新窗口或选项卡中打开文档。
function openWindow() {
window.open("/Music/Music.html?filenameyouwant", "_blank",
"width=600, height=200"
).focus();
}
在源 HTML 中添加一个 id
<source src="001.mp3" id="audio" type="audio/mp3">
然后使用 javascript 选择它,并将它的 src 设置为您访问的 url 的末尾,您需要包装 url 参数的获取,直到 dom 加载完毕,否则将没有源元素
?filenameyouwant
document.addEventListener("DOMContentLoaded", (event) => {
document.getElementById('audio').src = window.location.search.substr(1)
});
关于javascript - 在 MVC5 中如何打开一个新窗口并传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49395499/