2015-06-30 4 views
1

Как я могу получить значение из яваскрипта функции в коде, на странице загрузки .. Javascript функция, как:извлечения значения из функции яваскрипта в коде

<script type="text/javascript"> 
     function isIFrame() { 
      var isInIFrame = (top.location != self.location); 
      if (isInIFrame) { 
       return "inside"; 
      } 
      else { 
       return "outside"; 
      } 
     } 
    </script> 

и код позади, как:

protected void Page_Load(object sender, EventArgs e) 
    { 
     string resutOfExecuteJavaScript = ""; 
     // resutOfExecuteJavaScript = isIFrame(); // from javascript 

     if (resutOfExecuteJavaScript == "inside") 
     { 
      // do something 
     } 
     else 
     { 
      // do something 
     } 
    } 

Спасибо.

ответ

5

Вы не можете напрямую вызвать метод javascript на стороне клиента из кода на стороне сервера. Для этого сначала необходимо присвоить результат функции к значению некоторой скрытой переменной, а затем получить доступ к нему в стороне сервера

Предположим, что у вас есть скрытое поле, как этот

<input type="hidden" runat="server" id="hdnVal"/> 

, то вы можете установить значение, как показано ниже

document.getElementById("hdnVal").value=isIFrame(); 

затем на стороне служить

string resutOfExecuteJavaScript = hdnVal.Value; 
+0

Это не полезно, поскольку Page_ Запуск загрузки до функции javascript – Mo7ammed

+1

Page_load происходит на стороне сервера, Javascript выполняется на стороне клиента. Поэтому всякий раз, когда значение представляет собой обратную передачу на сервер, вы будете иметь это значение в переменной. Дайте полную картину проблемы в сообщении –

+0

. Проверьте это для вашего реферала http://www.dotnetodyssey.com/2014/12/18/set-value-asphiddenfield-using-jquery-get-value-asp-net- code-behind/ –

0

с помощью _doPostBack, вы можете так LVE это один

 <script type="text/javascript"> 
      function isIFrame() { 
      var isInIFrame =(top.location != self.location); 
      var result; 
      if (isInIFrame) { 
       result="inside"; 
      } 
      else 
      { 
      result ="outside"; 
      } 
      __doPostBack('callPostBack', result); 
     </script> 
    </head> 

В коде позади секции

protected void Page_Load(object sender, EventArgs e) 
{ 
    this.ClientScript.GetPostBackEventReference(this, "arg"); 
    if (IsPostBack) 
    { 
     string eventTarget = this.Request["__EVENTTARGET"]; 
     string eventArgument = this.Request["__EVENTARGUMENT"]; 

     if (eventTarget != String.Empty && eventTarget == "callPostBack") 
     { 
      if (eventArgument == "inside"){ 
       //do something 
       } 
      else if(eventArgument == "outside") 
      { 
      //do something 
      } 
     } 
    else 
    { 
     // set the button click 
     btnclick.Attributes.Add("onClick", "isIFrame();"); 
    } 
} 

Ниже ссылка поможет вам получить больше идеи.

http://www.dotnetcurry.com/ShowArticle.aspx?ID=203

+0

Пожалуйста, не указывайте ссылки в качестве ответов. Ссылки могут быть мертвыми, и если это ответ, принятый OP, люди не будут знать, что такое решение. Пожалуйста, предоставьте подробную информацию в своем ответе, указав исходную страницу – freefaller

0

в JavaScript файл или ваш скрипт добавить:

function SetHiddenVariable() 
    { 
     document.getElementById(inpHide).value= "value"; 
    } 

в .aspx добавить этот тег:

<input id="inpHide" type="hidden" runat="server" /> 

в aspx.cs (C# файл) добавить:

anyVariable = inpHide.Value; 
Смежные вопросы