javascript - 在 MVC5 中如何打开一个新窗口并传递参数?

标签 javascript html asp.net-mvc-5 html5-audio

我想在新窗口中打开音频控件并将文件名从 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 ahtml 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/

相关文章:

javascript - 无法使用 Javascript 使 RegEx 模式在 MVC 5 View 中正常工作

c# - 无法在 ASP.Net MVC 5 中找到区域 View

javascript - 如何让我的父列表元素忽略其子元素的宽度?

javascript - jQuery .text() 方法返回在其他函数中变成 NaN

jquery - Style Span 和 Jquery

javascript - 我怎样才能以聪明的方式重构它

c# - MVC 5 未正确验证 StringLength 属性

javascript - IE6特定的javascript代码

javascript - 过滤后如何将行推送到表中?

javascript - 将jQuery事件应用于CSS形状