如何将jQuery函数放入后面的代码中?
本文关键字:代码 jQuery 函数 | 更新日期: 2023-09-27 18:19:06
我有下面的jQuery函数(Show_popupWindows
):
$(function () {
var popupWindows_Done = $('input[type="hidden"]#hfpopupWindows_Done').val();
if (popupWindows_Done == "false") {
Show_popupWindows();
}
else {
}
}); //End Of $(function ()
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
function Show_popupWindows() {
var x = screen.availWidth;
//alert(x);
$('div#OffDiv').css({ 'width': x });
//alert($('div#OffDivAndLoadingContainer').css('width'));
var y = screen.availHeight;
//alert(y);
$('div#OffDiv').css({ 'height': y });
//alert($('div#OffDivAndLoadingContainer').css('height'));
//alert('On');
$('div#OffDiv').css({ 'display': 'block' });
$('div#TimerContainer').css({ 'display': 'block' });
var w1 = window.open('http://www.blablabla.com', '_blank', 'channelmode=no,directories=yes,location=no,resizable=yes,titlebar=yes,menubar=no,toolbar=no,scrollbars=yes,status=yes', false);
var w2 = window.open('http://www.blablabla.com', '_blank', 'channelmode=no,directories=yes,location=no,resizable=yes,titlebar=yes,menubar=no,toolbar=no,scrollbars=yes,status=yes', false);
window.focus();
var sec = $('#TimerContainer span').text()
var timer = setInterval(function () {
$('#TimerContainer span').text(--sec);
if (sec == 0) {
clearInterval(timer);
$('div#OffDiv').css({ 'display': 'none' });
$('div#TimerContainer').css({ 'display': 'none' });
}
}, 1000);
var watchClose = setInterval(function () {
try {
if (w1.closed || w2.closed) {
clearTimeout(watchClose);
clearInterval(timer);
DoNotClosePoPupWindowDuringTimer();
}
}
catch (e) {
}
}, 200);
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
我如何把这个函数放到我的代码后面,这样没有人可以通过编辑aspx文件来改变这个函数。
我尝试了下面代码中的方法:
private static StringBuilder Create_ShowpopupWindows_Function()
{
StringBuilder sb = new StringBuilder();
sb.Append("var x = screen.availWidth;");
sb.Append("//alert(x);");
sb.Append("$('div#OffDiv').css({ 'width': x });");
sb.Append("//alert($('div#OffDivAndLoadingContainer').css('width'));");
sb.Append("var y = screen.availHeight;");
sb.Append("//alert(y);");
sb.Append("$('div#OffDiv').css({ 'height': y });");
sb.Append("//alert($('div#OffDivAndLoadingContainer').css('height'));");
sb.Append("//alert('On');");
sb.Append("$('div#OffDiv').css({ 'display': 'block' });");
sb.Append("$('div#TimerContainer').css({ 'display': 'block' });");
sb.Append("var w1 = window.open('http://www.almasafzar.com', '_blank', 'channelmode=no,directories=yes,location=no,resizable=yes,titlebar=yes,menubar=no,toolbar=no,scrollbars=yes,status=yes', false);");
sb.Append("var w2 = window.open('http://www.soscharge.com', '_blank', 'channelmode=no,directories=yes,location=no,resizable=yes,titlebar=yes,menubar=no,toolbar=no,scrollbars=yes,status=yes', false);");
sb.Append("window.focus();");
sb.Append("var sec = $('#TimerContainer span').text()");
sb.Append("var timer = setInterval(function () {");
sb.Append("$('#TimerContainer span').text(--sec);");
sb.Append("if (sec == 0) {");
sb.Append("clearInterval(timer);");
sb.Append("$('div#OffDiv').css({ 'display': 'none' });");
sb.Append("$('div#TimerContainer').css({ 'display': 'none' });");
sb.Append("}");
sb.Append("}, 1000);");
sb.Append("var watchClose = setInterval(function () {");
sb.Append("try {");
sb.Append("if (w1.closed || w2.closed) {");
sb.Append("clearTimeout(watchClose);");
sb.Append("clearInterval(timer);");
sb.Append("DoNotClosePoPupWindowDuringTimer();");
sb.Append("}");
sb.Append("}");
sb.Append("catch (e) {");
sb.Append("}");
sb.Append("}, 200);");
return sb;
}
但是当我在page_load:
中调用它时它不起作用 protected void Page_Load(object sender, EventArgs e)
{
StringBuilder sb = Create_ShowpopupWindows_Function();
ScriptManager.RegisterStartupScript(this, this.GetType(), "Show_popupWindows", sb.ToString(), true);
}
这是客户端代码,那么您将如何防止用户能够更改它?这是不可能的
在代码中使用StringBuilder
创建脚本以避免客户(从您对问题的评论中获取)操作脚本,您可以将脚本文件嵌入到汇编文件中。
- 右键单击脚本并选择构建动作:嵌入式资源。
- 将脚本位置添加到程序集信息文件:
[assembly: System.Web.UI.WebResource("SomeFolder.myJavascript.js", "text/js")]
-
在页面中包含脚本:
string scriptLocation = Page.ClientScript.GetWebResourceUrl(this.GetType(), "SomeFolder.myJavascript.js"); Page.ClientScript.RegisterClientScriptInclude("SomeFolder.myJavascript.js", scriptLocation);
您的页面运行的任何JavaScript都将对您的浏览器可见,任何关心右键单击并查看源代码的人都可以看到。试图找到棘手的方法让asp.net注入脚本不能改变这一点。
如果您担心有人扰乱脚本并引起问题,那么您必须重新审视如何在服务器端验证内容。
jQuery基于Javascript代码,通常(在本例中)在客户端机器上执行。这意味着你无法阻止用户修改代码。
你可以做一些事情来阻止他们,比如混淆&压缩它:如何混淆JS代码
更健壮的解决方案是控制您试图从服务器端保护的任何内容。