Javascript函数打开未被调用的文件

Javascript function to open a file not getting called

本文关键字:调用 文件 函数 Javascript      更新时间:2023-09-26

我在调用 JavaScript 函数
时遇到问题我想在单击链接时打开文件。

这是我的代码:

<script language="javascript" type="text/javascript">
var refViewer = null;
function OpenViewerWindow(image) {
    return window.open(image, "Viewer", "height=400px,width=550px,menubar=no,scrollbars=yes ,resizable=yes,top=100px,left=234px");
}

function openViewer(image) {
    if (refViewer != null) {
        if (refViewer.closed == false) {
            refViewer.close();
            refViewer = OpenViewerWindow(image);
        }
        else refViewer = OpenViewerWindow(image);
    }
    else
        refViewer = OpenViewerWindow(image);
}   

</script>
<a onclick=javascript:openViewer(@ViewBag.path)><img src="pic.jpg"/></a>

和控制器中:

 public ActionResult ActivityPosting(int HobbyDetailID)
    {
string filepath = Server.MapPath("~/ePortfolio/PortFolioContent/" + HobbyDetailID + "/ReferenceMaterial/" + item.FilePath);
 ViewBag.path = filepath;
    return view();
   }

问题是javascript函数没有被调用。请帮助我

在你的JavaScript

OpenViewerWindow函数中试试这个(你需要使用file://协议:

return window.open("file://" + image, "Viewer", "height=400px,width=550px,menubar=no,scrollbars=yes   ,resizable=yes,top=100px,left=234px")

确保传递一个字符串:

<a onclick=javascript:openViewer('@ViewBag.path')><img src="pic.jpg"/></a>

请注意单引号。或者更好地使用 Json.Encode 来确保正确编码传递给 openViewer javascript 函数的值:

<a onclick="javascript:openViewer(@Html.Raw(Json.Encode(ViewBag.path)))"><img src="pic.jpg"/></a>

您的代码还有另一个问题。使用 Server.MapPath 计算 url,但此方法返回服务器上文件的绝对路径。客户端显然无法使用绝对路径访问它。您应该使用Url.Content帮助程序传递 url:

public ActionResult ActivityPosting(int HobbyDetailID)
{
    string filepath = Url.Content("~/ePortfolio/PortFolioContent/" + HobbyDetailID + "/ReferenceMaterial/" + item.FilePath");
    ViewBag.path = filepath;
    return View();
}