从codebehind中的javascript函数中检索值

如何在代码隐藏中,在页面加载时从javascript函数中检索值.javascript函数如:

 function isIFrame() { var isInIFrame = (top.location != self.location); if (isInIFrame) { return "inside"; } else { return "outside"; } }  

和代码背后像:

 protected void Page_Load(object sender, EventArgs e) { string resutOfExecuteJavaScript = ""; // resutOfExecuteJavaScript = isIFrame(); // from javascript if (resutOfExecuteJavaScript == "inside") { // do something } else { // do something } } 

谢谢。

您无法直接从服务器端代码调用客户端javascript方法。 首先,您需要将函数结果赋值给某个隐藏变量的值,然后在服务器端访问它

假设你有一个像这样的隐藏字段

  

然后你可以设置如下的值

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

然后在服务方

  string resutOfExecuteJavaScript = hdnVal.Value; 

使用_doPostBack,你可以解决这个问题

    

在代码后面部分

 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

在javascript文件或您的脚本中添加:

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

在.aspx中添加此标签:

   

在aspx.cs(c#文件)中添加:

  anyVariable = inpHide.Value;