2011-12-31 5 views
3

У меня есть сценарий, который я хочу открыть после 5 просмотров страниц. Скрипт java отлично работает на странице default.aspx со ссылкой для его вызова. Но я хочу запустить его с моей страницы default.aspx.cs после того, как мой счетчик сеансов будет равен 5. Как я могу это сделать? Является ли это возможным?Вызов функции Javascript из кода за страницей

default.aspx

<script type="text/javascript"> 
    window.name = "Register"; 
    function popWin(link) { 
     var w = window.open(link.href, link.target, 'width=500,height=600,resizable'); 
     return w ? false : true; // if popup blocker, use the default behaviour of the link 
    } 
</script> 

Default.aspx.cs страница

if (Session["PagesViewed"].ToString() == "5") 
      { 
       //Call my Javascript function How????? 

      } 

ответ

4

Вы можете вывести Javascript в LiteralControl из кода позади:

.aspx:

<asp:Literal id="myLiteral" runat="server" /> 

Код позади:

myLiteral.Text = "<script type='text/javascript'>popWin('url');</script>"; 

Когда оказывается таким образом, выход сценария будет вызывать функцию - убедитесь, что она ниже на странице, чем где функция была определена, чтобы гарантировать ее существует.

+0

Я пробовал код выше, и я получаю эту ошибку. Ошибка выполнения Microsoft JScript: «popWin» не определено – CsharpBeginner

+0

@CsharpBeginner Поместите '' после вашего скрипта, как указано в ответе – xandercoded

0

Вы не можете вызывать функции javascript непосредственно из C#. Однако, что вы можете сделать, это передать <script> браузеру, который выполняет эту функцию.

response.Write("<script>popWin(something);</script>"); 
2

В ASP.Net вы можете сделать следующее:

Page.ClientScript.RegisterStartupScript(
    this.GetType(), 
    "openpopup", 
    "popWin('www.someurl.com');", 
    True); 

Если вам нужно больше контроля над размещением скриптов @Oded имеет лучше подход - как пытается вызвать функцию, которая имеет не было определено, это не очень хорошая идея ...

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