2012-05-24 4 views
1

У меня возникла проблема при вызове функции javascript
Я хочу открыть файл по клику по ссылке.Функция 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(); 
    } 

Проблема является Java-функция не получает called.Please помочь мне

ответ

0

Попробуйте это вместо этого в вашей функции JavaScript OpenViewerWindow (вам необходимо использовать протокол file://:

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

проблема функция openViewer() сама по себе не вызывался – user1274646

+0

Попробуйте изменить 'Ā' тег, чтобы быть это:' ' mattytommo

+0

эй теперь им получать ошибку window.open() говорит, что доступ запрещен !!! – user1274646

0

Убедитесь, что вы передаете строку:

<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 с помощью Url.Content помощника:

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

Я попробовал evrything u предложил – user1274646

+0

К сожалению, это потому, что я забыл установить 'ViewBag.path = filepath;' в моем примере. Я обновил. –

+0

функция вызывается, но файл не открывается – user1274646

 Смежные вопросы

  • Нет связанных вопросов^_^