Замена Ereg с помощью preg (начиная с PHP 5.3.0) была правильным шагом в нашу пользу.
preg_match, который использует синтаксис регулярных выражений, совместимый с Perl, часто является более быстрой альтернативой ereg. [ ! d1]
Вы должны знать 4 основных элемента для переноса шаблонов ereg в preg:
Добавить разделители (/): 'pattern' => '/pattern/' Разделитель Escape, если он является частью шаблона: 'patt/ern' => '/patt\/ern/' Достичь это программно следующим образом: $old_pattern = '<div>.+</div>'; $new_pattern = '/' . addcslashes($old_pattern, '/') . '/'; eregi (нечувствительное к регистру сопоставление): 'pattern' => '/pattern/i' Итак, если вы используете функцию eregi для совпадения case insenstive, просто добавьте 'i' в конец нового шаблона ('/ шаблон/'). Значения ASCII: В ereg, если вы используете номер в шаблоне, предполагается, что вы ссылаетесь на ASCII символа. Но в preg число не рассматривается как значение ASCII. Таким образом, если ваш шаблон содержит значение ASCII в выражении ereg (например: новая строка, табуляции и т. Д.), Преобразуйте его в шестнадцатеричный и префикс с помощью \ x. Example: 9(tab) becomes \x9 or alternatively use \t.Редактирование в Документах Google использует iframe. Вам нужно прикрепить слушателя к документу iframe. Кажется, что что-то осложняет iframe, который я еще не смог полностью выработать, но для Firefox выглядит следующим образом:
var iframe = document.getElementsByTagName("iframe")[0];
if (iframe) {
iframe.contentDocument.addEventListener("keypress", function(evt) {
console.log("iframe keypress: " + evt.which);
}, false);
}
Вам не нужно прикреплять слушателя ко всем элементам на странице.
window.addEventListener('load', function() {
document.addEventListener('keypress', function() { alert("hello!"); });
}
Поскольку это сценарий GreaseMonkey, вам не нужно беспокоиться об IE и использовать метод addEventListener
.
Кажется, работает для меня ... но я использую jQuery $ (document) .ready (), чтобы убедиться, что моя страница загружена перед присоединением какого-либо события. Я думаю, вы могли бы сделать это на голом javascript с помощью:
window.onload = function()
{
els = document.getElementsByTagName("*");
for(i=0;i<els.length;i++) {
els[i].onkeypress=function(){alert("hello!");};
}
}
Кстати, вы не можете прикрепить к событию больше одной функции:
for(i=0;i<els.length;i++){
els[i].onkeypress=function(){alert("hello!");};
els[i].onkeypress=function(){alert("hello2!");};
els[i].onkeypress=function(){alert("hello3!");};
}
Элемент будет зарегистрировать только последний (он переопределяет предыдущую функцию), в этом случае «alert (« hello3! »);»