2013-12-09 3 views
1

У меня есть этот JavaScript:Вызов JavaScript из кода Позади в ASPX

<script language="javascript" type="text/javascript"> 
    function NewWindow(mypage, myname, w, h, scroll, pos) { 
     var win = null; 
     if (pos == "random") { 
      LeftPosition = (screen.width) ? Math.floor(Math.random() * (screen.width - w)) : 100; 
      TopPosition = (screen.height) ? Math.floor(Math.random() * ((screen.height - h) - 75)) : 100; 
     } 
     if (pos == "center") { 
      LeftPosition = (screen.width) ? (screen.width - w)/2 : 100; 
      TopPosition = (screen.height) ? (screen.height - h)/2 : 100; 
     } 
     else if ((pos != "center" && pos != "random") || pos == null) { 
      LeftPosition = 0; TopPosition = 20 
     } 
     settings = 'width=' + w + ',height=' + h + ',top=' + TopPosition + ',left=' + LeftPosition + ',scrollbars=' + scroll + ',location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=no'; 
     win = window.open(mypage, myname, settings); 
    } 
</script> 

И я пытаюсь вызвать эту функцию из моего кода за следующим образом:

Dim Message As String = "This is My new Message" 
Dim url As String = HttpContext.Current.Request.Url.AbsoluteUri 
Dim script As String = "NewWindow(" & url & "," & Message & ",200,50,Yes,random)" 
     If Not Page.ClientScript.IsStartupScriptRegistered(Me.GetType(), "alertscript") Then 
      Page.ClientScript.RegisterStartupScript(Me.GetType(), "alertscript", script, True) 
     End If 

Полностью идея состоит в том, чтобы есть всплывающие окна в случае или сообщения об ошибках на моем веб-сайте.
Код vb принимает все необходимые атрибуты.
Но функция в моей aspx.page не вызывается.

+0

Где в коде вы звоните RegisterStartupScript из? –

+0

Вы используете JQuery? Если да, возможно, вы можете установить свой код за «$ (document) .ready()», чтобы запустить оповещение после того, как доступен весь документ. Сначала попробуйте простое оповещение, и они в вашей функции выставляют простое предупреждение и вызывают функцию, чтобы проверить, стреляли ли они. –

+0

@SystemDown сценарий, который я называю его из моего кода и в событии 'Load'. –

ответ

1

Попробуйте это пожалуйста:

Default.aspx

<%@ Page Title="Home Page" Language="vb" MasterPageFile="~/Site.Master" AutoEventWireup="false" 
    CodeBehind="Default.aspx.vb" Inherits="TesteVB._Default" %> 

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> 
</asp:Content> 
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 
    <h2> 
     Welcome to ASP.NET! 
    </h2> 
    <script language="javascript" type="text/javascript"> 
     function Test() { 
      alert('Banzai'); 
     } 

     function NewWindow(mypage, myname, w, h, scroll, pos) { 
      var win = null; 
      if (pos == "random") { 
       LeftPosition = (screen.width) ? Math.floor(Math.random() * (screen.width - w)) : 100; 
       TopPosition = (screen.height) ? Math.floor(Math.random() * ((screen.height - h) - 75)) : 100; 
      } 

      if (pos == "center") { 
       LeftPosition = (screen.width) ? (screen.width - w)/2 : 100; 
       TopPosition = (screen.height) ? (screen.height - h)/2 : 100; 
      } 
      else if ((pos != "center" && pos != "random") || pos == null) { 
       LeftPosition = 0; TopPosition = 20 
      } 

      settings = 'width=' + w + ',height=' + h + ',top=' + TopPosition + ',left=' + LeftPosition + ',scrollbars=' + scroll + ',location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=no'; 

      win = window.open(mypage, myname, settings); 
     } 
    </script> 
</asp:Content> 

Default.aspx.vb

Public Class _Default 
    Inherits System.Web.UI.Page 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     Dim csname1 As String = "PopupScript" 
     Dim csname2 As String = "AutoPopup" 
     Dim cstype As Type = Me.GetType() 

     ' Get a ClientScriptManager reference from the Page class. 
     Dim cs As ClientScriptManager = Page.ClientScript 

     ' Check to see if the startup script is already registered. 
     If (Not cs.IsStartupScriptRegistered(cstype, csname1)) Then 

      'Dim cstext1 As String = "Test();" 
      'cs.RegisterStartupScript(cstype, csname1, cstext1, True) 

      Dim Message As String = "This is My new Message" 
      Dim url As String = HttpContext.Current.Request.Url.AbsoluteUri 
      Dim script As String = "NewWindow('" & url & "','" & Message & "',200,50,'Yes','random');" 

      cs.RegisterStartupScript(cstype, csname1, script, True) 

     End If 
    End Sub 

End Class 
+0

Я вставлял код и новый скрипт в то место, где я его запускал, но у меня тот же результат ... Ничего ... У меня есть что сценарий никогда не вызывает его ... по какой-то причине ... –

+0

Я тестировал здесь, и все работает нормально с тем же кодом. Обратите внимание, что я поставил кавычки. Я тестировал в Firefox с отладкой и не дал никаких ошибок. Раскомментируйте строки, которые делают вызов функцией Test и комментируют другие, которые ниже, и расскажите, что произошло. Ваш веб-браузер включен для выполнения JS? –

+0

Да по умолчанию это то есть 11. У меня тоже есть Google ... те же проблемы –

0

Я думаю, что вы хотите поместить «NewWindow где ваш скрипт .. как это ..

Page.ClientScript.RegisterStartupScript(this.GetType(), "Call my function", "NewWindow();", true); 

Это, как я называю моим

Edit:. Попробуйте Это не тестировалось

..
Page.ClientScript.RegisterStartupScript(Me.[GetType](), "Call my function", "NewWindow();", True) 
+0

Я думаю, что я пропустил '' ', это важно? –

+0

Что я имею, когда я использую 'Inspect Element' в своем браузере, это' { } ', то есть скрипт ... полностью пуст из параметров ... –

+0

Возможно ли запустить скрипт изнутри моего кода? и могу ли я это сделать? –

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