[Mapbender-commits] r8601 - branches/2.7/http/javascripts trunk/mapbender/http/javascripts
svn_mapbender at osgeo.org
svn_mapbender at osgeo.org
Mon Apr 15 02:24:18 PDT 2013
Author: verenadiewald
Date: 2013-04-15 02:24:18 -0700 (Mon, 15 Apr 2013)
New Revision: 8601
Modified:
branches/2.7/http/javascripts/mod_key.php
trunk/mapbender/http/javascripts/mod_key.php
Log:
exclude html tags like input and textarea from event binding "keydown"
Modified: branches/2.7/http/javascripts/mod_key.php
===================================================================
--- branches/2.7/http/javascripts/mod_key.php 2013-04-10 19:06:14 UTC (rev 8600)
+++ branches/2.7/http/javascripts/mod_key.php 2013-04-15 09:24:18 UTC (rev 8601)
@@ -52,10 +52,21 @@
function mod_key_init(){
for(var i=0; i<mb_key_elements.length; i++){
if(mb_key_elements[i] == "body"){
- document.getElementById(mb_key_ids[i]).onkeydown = mod_key_Keyhandler;
- }
- else{
- window.frames[mb_key_ids[i]].document.getElementsByTagName("body")[0].onkeydown = new Function("mod_key_Keyhandler('" +mb_key_ids[i] + "');");
+ $('body').live('keydown', function(e) {
+ var tag = e.target.tagName.toLowerCase();
+ if (tag != 'input' && tag != 'textarea') {
+ mod_key_Keyhandler();
+ }
+ });
+ }
+ else {
+ $(document.getElementById(mb_key_ids[i]).contentWindow.document).keydown(function(e) {
+ var currentKeyId = mb_key_ids[i];
+ var tag = e.target.tagName.toLowerCase();
+ if (tag != 'input' && tag != 'textarea') {
+ mod_key_Keyhandler(currentKeyId);
+ }
+ });
}
}
}
Modified: trunk/mapbender/http/javascripts/mod_key.php
===================================================================
--- trunk/mapbender/http/javascripts/mod_key.php 2013-04-10 19:06:14 UTC (rev 8600)
+++ trunk/mapbender/http/javascripts/mod_key.php 2013-04-15 09:24:18 UTC (rev 8601)
@@ -52,6 +52,108 @@
function mod_key_init(){
for(var i=0; i<mb_key_elements.length; i++){
if(mb_key_elements[i] == "body"){
+ $('body').live('keydown', function(e) {
+ var tag = e.target.tagName.toLowerCase();
+ if (tag != 'input' && tag != 'textarea') {
+ mod_key_Keyhandler();
+ }
+ });
+ }
+ else {
+ $(document.getElementById(mb_key_ids[i]).contentWindow.document).keydown(function(e) {
+ var currentKeyId = mb_key_ids[i];
+ var tag = e.target.tagName.toLowerCase();
+ if (tag != 'input' && tag != 'textarea') {
+ mod_key_Keyhandler(currentKeyId);
+ }
+ });
+ }
+ }
+}
+function mod_key_Keyhandler(frameName){
+ if(frameName){
+ var code = eval("window.frames['"+frameName+"'].event.keyCode");
+ focus();
+ }
+ else{
+ var code = event.keyCode;
+ }
+ if(code == 187 || code == 107){
+ zoom(mod_key_map,true, '2.0');
+ }
+ if(code == 189 || code == 109){
+ zoom(mod_key_map,false, '2.0');
+ }
+ if(code == 32 || code == 13){
+ setMapRequest(mod_key_map);
+ }
+ if(code == 37){
+ mb_panMap(mod_key_map,"W");
+ }
+ if(code == 38){
+ mb_panMap(mod_key_map,"N");
+ }
+ if(code == 39){
+ mb_panMap(mod_key_map,"E");
+ }
+ if(code == 40){
+ mb_panMap(mod_key_map,"S");
+ }
+}
+<?php
+# $Id$
+# http://www.mapbender.org/index.php/mod_key.php
+# Copyright (C) 2002 CCGIS
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+echo "var mod_key_map = '".$e_target[0]."';";
+
+$sql = "SELECT e_id,e_element FROM gui_element WHERE (e_element = 'body' or e_element = 'iframe') AND fkey_gui_id = $1 AND e_public = 1";
+$v = array($gui_id);
+$t = array('s');
+$res = db_prep_query($sql, $v, $t);
+$cnt = 0;
+while($row = db_fetch_array($res)){
+ $ids[$cnt] = $row["e_id"];
+ $elements[$cnt] = $row["e_element"];
+ $cnt++;
+}
+
+echo "var mb_key_elements = new Array(";
+for($i=0; $i < count($elements); $i++){
+ if($i > 0){
+ echo ",";
+ }
+ echo "'".$elements[$i]."'";
+}
+echo ");";
+echo "var mb_key_ids = new Array(";
+for($i=0; $i < count($ids); $i++){
+ if($i > 0){ echo ",";}
+ echo "'".$ids[$i]."'";
+}
+echo ");";
+?>
+if(ie){
+ mb_registerInitFunctions('mod_key_init()');
+}
+function mod_key_init(){
+ for(var i=0; i<mb_key_elements.length; i++){
+ if(mb_key_elements[i] == "body"){
document.getElementById(mb_key_ids[i]).onkeydown = mod_key_Keyhandler;
}
else{
More information about the Mapbender_commits
mailing list