我正在研究一个系统,该系统管理多个页面给最终用户以进行数据输入。需要防止后退按钮(我知道,不理想,但这是要求),但在测试模式下查看页面时禁用此“阻止”。
我有必要的JS,它适用于我们需要的东西,但是我在向页面动态添加代码时遇到了问题,因此它会被触发。
这是什么意思?好吧,我可以动态添加代码块,因此看起来完全符合它应该,但代码不起作用。如果我复制并粘贴文本并手动将其添加到aspx页面(因此不使用后面的代码),它可以正常工作。
这是JS解决后退按钮的问题:
> <script type="text/javascript">
> function preventBack(){window.history.forward();} setTimeout("preventBack()", 0); window.onunload=function(){null};
> </script>
在我的aspx.vb
代码隐藏文件中,我有以下内容:
If Not TestMode Then
' add JS
End If
我尝试过以下方式添加JS - 其中没有一个似乎有效:
Page.RegisterClientScriptBlock("preventBack", "<script type=""text/javascript"">function preventBack(){window.history.forward();} setTimeout(""preventBack()"", 0); window.onunload=function(){null};</script>")
Dim scriptText As New StringBuilder
scriptText.Append("<script type='text/javascript'>")
scriptText.Append("function preventBack(){")
scriptText.Append(" window.history.forward();} ")
scriptText.Append("setTimeout('preventBack()', 0); ")
scriptText.Append("window.onunload=function(){null};")
scriptText.Append("</script>")
ClientScript.RegisterClientScriptBlock(Page.GetType, "noback", scriptText.ToString, False)
Dim lit as New Literal
lit.Text = "<script type='text/javascript' src='JS/noBack.js'>" '"<script type='text/javascript'>function preventBack(){window.history.forward();} setTimeout('preventBack()', 0); window.onunload=function(){null};</script>"
Head1.Controls.Add(lit)
Dim gc As New HtmlGenericControl
gc.TagName = "script"
gc.Attributes.Add("type", "javascript")
gc.Attributes.Add("src", "JS/noBack.js")
Head1.Controls.Add(gc)
ClientScript.RegisterClientScriptBlock(Me.GetType(), "MyScript", "JS/noBack.js", True)
noBackJS文件包含上述JS代码。
正如我所说,实际代码在渲染时会写入页面上的HTML,但根本不起作用/触发。显然我在这里遗漏了一些东西,但是不能为我的生活弄清楚它是什么,有人可以帮忙吗?
THX。
答案 0 :(得分:0)
试试这个:
Dim jScript As String = "<script>alert('')</script>"
Page.ClientScript.RegisterStartupScript(Me.GetType(), "Registered Script", jScript, False)
答案 1 :(得分:-1)
您可以使用eval()
,例如:
eval($("#mytextbox").val())