今天遇到了一个浏览器兼容的问题,很简单也很常见,但查起原因来有点难。所以在这里记录一下,做个备份。
基本业务是这样子的:点击一张图片显示数据选项。具体结构如下:
<div class="xiazai">
<a href="javascript:void(0);" onclick="download('downLoadAlert',this);">
<img src="images/xiazai.png" title="下载" /></a>
</div>
download方法是写在一个JS文件中的,且在当前JSP页面中有引用。基本结构如下:
function download(obj){
......
}
进行测试时在IE下很正常,火狐却报错:
download() is not a function。很明显我的download是个方法且存在且当前页面能找到它(firebug的脚本选项下能找到引入的JS文件),为什么还会报这种错,网上查说因为
系统中某个对象的ID或name叫这个所以找不到了,于是搜了当前JSP页面没找到,搜了整个项目果然有一个ID叫这个的,于是改成了downloadSet()方法。
再次测试,火狐还是不正常,报错:downloadSet is not defined。没有定义是不可能的,当前页面还能找到它呢。绝对又是兼容性问题,再查,没找到原因找到解决办法了。如下:
window.downloadSet=function(obj){
......
}
如此之后,一切正常了。
得到的教训就是:在以后的开发中取名尽可能复杂点,或下划线或长名字;其次定义方法时最好写成window.functionName=function(){}的格式比较好。以免出现没必要的麻烦。
分享到:
相关推荐
9. Error 2065: No definition found for function functionName 函数未定义,可能是拼写错误,或未导入包含该函数的库或类。 10. Error 2095: Could not find symbol className 找不到指定的类。检查类的路径、...
End Sub Function FunctionName(参数1, 参数2,…) … FunctionName = 返回值 End Function 调用方法: Sub直接用 SubName 参数1, 参数2,… Function如果不要返回值,用 FunctionName 参数1, 参数2,… 如果要返回值...
17.JS中的函数定义:function functionName([parameter],...){statement[s]} 18.当文件中出现多个form表单时.可以用document.forms[0],document.forms[1]来代替. 19.窗口:打开窗口window.open(), 关闭一个窗口:window...
最常见的用法:例子var functionName = require ( 'function.prototype.name' ) ;var assert = require ( 'assert' ) ;assert . equal ( functionName ( function foo ( ) { } ) , 'foo' ) ;functionName . shim ( ...
// Uncaught ReferenceError: a is not defined let a = 1; ``` **分析**: - 在变量声明之前就尝试访问变量会导致`ReferenceError`。 - `let`声明的变量存在提升现象,但在变量未被初始化之前就访问它会抛出错误...
function functionName() { # 函数体 # 这里可以包含任意数量的Shell命令 } ``` 或者简化语法: ```bash functionName() { # 函数体 } ``` **注意:** - 函数定义必须在调用之前完成,因为Shell脚本是顺序执行...
"格式化-function与小括号间留空格。链式调用不换行"这一主题主要涉及JavaScript编程语言中的代码规范,包括函数调用时的空格使用以及链式调用的样式规则。 首先,我们来探讨函数调用时的小括号前后的空格问题。在...
throw new Error("XMLHttpRequest is not supported") } } } } var xhr = new XMLHttpRequest(); ``` 这段代码是为了在不支持原生`XMLHttpRequest`对象的旧版IE浏览器中提供一个兼容的实现。`new ...
function functionName(param1 : Type1, param2 : Type2) : ReturnType { // function body } ``` 例如,定义一个返回两个整数之和的函数: ```eScript function addNumbers(num1 : Integer, num2 : Integer) : ...
[Public | Private] Function functionName([paramList]) [statements] [functionName = expression] [Exit Function] [statements] [functionName = expression] End Function ``` 其中,`Public`和`Private`...
var functionName = new Function('param1', 'param2', '...paramN', 'functionBody'); ``` 这种方式不太推荐,因为它的性能较差,且不利于调试。 函数在JavaScript中还有其他一些重要的特性: - **局部和全局...
std::cout << "Function not found!" ; } ``` 这个例子中,`functionMap`是一个`std::map`,键是函数名称字符串,值是函数指针。当需要调用函数时,我们查找映射,如果找到相应的条目,就使用函数指针执行函数。 ...
3. **`window.event`问题**:在Firefox中,`window.event`无法直接使用,需要将事件作为参数传递给函数,如`onMouseMove = "functionName(event)"`,然后在函数内部处理。 4. **对象ID作为对象名问题**:在Firefox...
Log.d("TAG", "Function: " + functionName + ", Line Number: " + lineNumber); } ``` 在上述代码中,`getStackTrace()`返回一个`StackTraceElement`数组,每个元素代表调用栈中的一层。数组索引为0的元素表示`...
在标准模式下,IE8及以下版本不支持通过`setAttribute`直接为元素添加事件监听器,这与现代浏览器如Chrome和Firefox存在差异。为了确保兼容性,通常推荐使用`addEventListener`方法为元素添加事件监听器,但由于IE8...
Hive Function Meta-commands,如SHOW FUNCTIONS,可以列出所有的Hive函数和操作符,而DESCRIBE FUNCTION [functionname]和DESCRIBE FUNCTION EXTENDED [functionname]分别可以显示函数的简短描述和详细描述。...
// ReferenceError: localVar is not defined ``` - **全局作用域**:在函数外部声明的变量在整个程序中都是可见的。 ```javascript var globalVar = "global"; function testGlobal() { console.log...
函数的构造语法有这三种: Js代码 代码如下: 1.function functionName(arg0, arg1, … argN) { statements }//function语句 2.var function_name = new Function(arg1, arg2, …, argN, function_body);//Function...
function [output1, output2, ...] = functionName(input1, input2, ...) % 函数体 end ``` 5. **工作空间与局部变量**:在函数内部定义的变量是局部变量,只在函数内部可见。而不在函数内部定义的变量属于全局...
std::cout << "Function not found." ; } ``` 在可配置化和架构设计中,类函数指针可以帮助我们实现插件式架构。通过动态加载库文件,我们可以获取到库中的类函数指针,然后在运行时根据配置文件来决定调用哪个...