Добавление JavaScript на многие страницы (более 500) в asp.net без MasterPage
Я работаю над проектом, в котором есть более 500 страниц ASPX (всплывающие окна используют ShowModelDialog) Я хочу, чтобы подавить / отключить клавишу ввода для каждой страницы
Я хочу добавить код ниже для каждой страницы (все всплывающие окна) или для каждого запроса, сделанного пользователем. К сожалению, в проекте нет главной страницы
<script type="text/javascript">
function stopRKey(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type=="text")) {return false;}
}
document.onkeypress = stopRKey;
</script>
void Application_BeginRequest(object sender, EventArgs e)
{
// Code that runs on application shutdown
System.Web.UI.Page mypage = (System.Web.UI.Page)HttpContext.Current.Handler;
if (mypage != null)
{
mypage.ClientScript.RegisterClientScriptBlock(GetType(), "MyScriptKey", "alert('hi')", true);
}
}
Я пытаюсь добавить этот скрипт в Global.asax
в Application_BeginRequest
но не повезло
2 ответа
Я использовал Application_PreRequestHandlerExecute
событие в Global.asax
файл и все заработало.
void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
HttpContext context = ((HttpApplication)sender).Context;
Page mypage = context.CurrentHandler as Page;
if (mypage != null)
{
mypage.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), @"function stopRKey(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type=='text')) {return false;}
}
document.onkeypress = stopRKey; ", true);
mypage.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), @"function validatedot(val, evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode(key);
y = val.value.split(/\./);
var regex = /[0-9]|\./;
if (y.length > 1 && key == '.') {
theEvent.returnValue = false;
if (theEvent.preventDefault) theEvent.preventDefault();
}
if (!regex.test(key)) {
if (theEvent.keyCode != 8 && theEvent.keyCode != 9) {
//alert('Enter only number');
//alert(theEvent.keyCode);
theEvent.returnValue = false;
if (theEvent.preventDefault) theEvent.preventDefault();
}
}
}", true);
}
}
Если вам нужно отредактировать большое количество файлов, то как это сделать сильно зависит от того, на какой платформе вы работаете и какие инструменты у вас есть в вашем распоряжении.
В Windows я бы использовал Notepad++. С его помощью вы можете выполнять поиск и замену в нескольких файлах в подкаталоге, фильтруя только определенные типы файлов (*.asp или *.php) и используя регулярные выражения для поиска и изменения текста:
CTRL-F, чтобы открыть диалог поиска. Перейдите на вкладку "Найти в файлах". Выберите "Каталог" и отфильтруйте соответственно. Выберите "Режим поиска" = "Регулярное выражение" и используйте
(</body>)
для поля "Найти что" и
***YOUR SCRIPT IN A SINGLE LINE HERE*** \r\n \1
для поля "Заменить на".
Обратите внимание на "\1", который используется для повторного размещения тега закрывающего тела в файле (в противном случае он будет перезаписан).
В Unix и Mac вы, вероятно, могли бы использовать некоторые эквивалентные текстовые редакторы с функциями редактирования регулярных выражений PCRE, но я боюсь, что не могу вам помочь.