`
锋之轨迹
  • 浏览: 56348 次
  • 性别: Icon_minigender_1
  • 来自: 福州
文章分类
社区版块
存档分类

IE:通过 href 调用函数,参数乱码 (转)

阅读更多

示例代码

    <a href="javascript:foo('CPU%E9%A3%8E%E6%89%87')">foo1</a><br />
    <a href="javascript:foo('CPU%u98CE%u6247')">foo2</a><br />
    <a href="javascript:foo(escape('CPU风扇'))">foo3</a><br />
    <a href="javascript:foo(encodeURI('CPU风扇'))">foo4</a><br />
    <a href="#" onclick="foo('CPU%E9%A3%8E%E6%89%87')">foo5</a><br />
    <textarea rows="8" cols="50" id="txt"></textarea>

    <script type="text/javascript">
    var txt = document.getElementById('txt');
    function foo(msg,src)
    {
        txt.value = txt.value + msg + '\r\n';
    }
    </script>

运行结果

从上到下,依次点击各链接,结果如下:

IE:通过 href 调用函数,参数乱码 - CPU风扇 - CPU 藏经阁

可以看到,点击foo1后,乱码了。

问题描述

通过 href 调用函数,参数若为中文 encodeURI 编码后的字符串,IE浏览器下乱码。

问题解析

1、上述调用,浏览器会先对参数自动解码;(参数必须是 encodeURI 编码后的字符串)

2、非IE浏览器使用相应的 decodeURI 解码;(仅测试了webkit核心)

3、IE浏览器(含IE9)使用 unescape 解码;(乱码原因)

解决办法

1、使用 onclick 代替 href 调用函数;(推荐,参见示例代码的foo5)

2、参数不编码,先做为 encodeURI 的参数,再一起传递给调用函数;(参见foo4)

分享到:
评论

相关推荐

    C# 获取调用函数 参数名称和值

    总之,C#中获取调用函数的参数名称主要依赖于反射机制,通过`StackTrace`、`StackFrame`和`MethodBase`来追踪和解析调用信息。然而,获取参数值通常需要更复杂的策略,如使用AOP或对代码进行特殊处理。在实际开发中...

    JavaScript程序设计课件:函数的调用方式.pptx

    JavaScript提供了 4 种函数调用: 一般形式的函数调用 作为对象的方法调用 使用 call 和 apply 动态调用 使用 new 间接调用 5.2.2 函数的调用方式 2、函数的调用方式 一般形式的函数调用,是常见的函数调用方式,...

    QT编写DLL调用示例 方法 参数 返回值 事件回调

    QT编写DLL给外部程序调用示例 方法 参数 返回值 事件回调 : 1:C#或者 NET 第一步:引入命名空间; using System Runtime InteropServices; 第二步:声明函数 必须与实际DLL中函数名及参数一致; [DllImport &quot;qt...

    第六章Python函数习题及答案--中文

    6.10 节函数的调用:函数可以使用位置参数和关键字参数来调用。 6.11 节函数的循环输出:函数可以使用循环来输出多次结果。 6.12 节函数的循环输出:函数可以使用循环来输出多次结果,但需要注意循环的终止条件,...

    进程间函数调用

    remote-function底层使用命令管道进行通讯,内置的流程完成了函数参数和返回值的序列化过程。且大部分的参数和返回值都可以使用内置的(反)序列化方法,对于一些复杂的数据类型,需要自己(反)序列化。 项目首页...

    C/C++ 函数调用与函数返回值

    函数参数与函数调用  1、函数调用的作用:  ·用实参数向形式参数传递数据;  ·为获得数据参数及在函数体中声明的变量分配存储空间;  ·中断现行(调用)函数,把流程向被调用函数的入口处,开始执行被调...

    C++自动生成函数调用关系图.rar

    1. **函数调用**:在C++中,函数是一段可重用的代码块,可以接受输入参数(如果有的话),执行特定任务,并可能返回结果。函数调用是程序中一个函数被另一个函数或主程序执行的过程。 2. **控制流**:函数调用是...

    C++ 通过字符串调用函数

    在C++编程中,通过字符串调用函数是一种高级特性,通常涉及到函数指针、元编程或者更复杂的语言机制。这个示例代码可能演示了如何在运行时根据字符串内容找到并执行相应的函数。这种技术在某些场景下非常有用,比如...

    函数调用过程种种细节分析

    函数调用是一个过程,其中一个函数通过其名称被引用并传递参数,然后控制权转移到该函数的代码。这个过程包括以下步骤: 1. 参数传递:调用函数时,参数值被压入堆栈,按照右向左的顺序(通常在C/C++中)。 2. 返回...

    CEF:C++ 调用 JavaScript 函数 Demo(VS2013)

    这是使用 CEF 开发时 C++ 调用 JavaScript 函数的例子,详细步骤请见博客文章 http://blog.csdn.net/blackwoodcliff/article/details/75137460

    c函数调用-不使用函数返回值

    本文将深入探讨“C函数调用-不使用函数返回值”的概念,通过分析给定的代码示例,解释不同类型的函数参数传递方式,并讨论其潜在的影响和最佳实践。 ### 函数调用与参数传递 在给定的代码示例中,我们看到了多种...

    易语言调用远程进程DLL函数

    在易语言中,我们可以通过"系统支持"库的"调用动态链接库"命令来调用DLL函数。 调用远程进程的DLL函数则涉及到进程间通信(IPC)。在易语言中,这通常需要借助API函数,如`OpenProcess`、`VirtualAllocEx`、`...

    qt 调用javascript函数 带参数

    例如,如果你有一个名为`myJSFunction`的JavaScript函数,可以这样调用: ```cpp QWebFrame *frame = webView-&gt;page()-&gt;mainFrame(); frame-&gt;evaluateJavaScript("myJSFunction()"); ``` 4. **传递参数** 如果...

    函数调用.rar

    6. 嵌套函数调用:在一个函数内部调用另一个函数,可以实现更复杂的逻辑结构。 7. 高阶函数:函数作为参数传递给其他函数,或者接收函数作为返回值,这在函数式编程中很常见。 8. 函数库和模块:程序员可以将相关...

    函数的定义和调用

    在程序的其他地方,你可以通过函数名和传递实际参数来调用已定义的函数。调用格式如下: ```cpp 返回值 变量名 = 函数名(实际参数, 实际参数, ...); ``` 实际参数的值会赋给形参,然后执行函数体中的代码。例如,...

    19_函数调用模型_主调函数和被调用函数.zip_C语言

    3. 函数调用:通过函数名和括号来调用函数,括号内可以传递参数。 二、主调函数( Caller Function) 1. 主调函数是程序的入口点,通常由操作系统或运行时环境调用。在C语言中,`main()`函数是默认的主调函数,它...

    C语言程序设计:第六章 函数.ppt

    3. **函数的引用**:函数可以通过函数调用来引用,调用时需要提供实参,实参的值会传递给函数的形参。函数调用的方式有语句形式、表达式形式和作为其他函数的参数。例如: ```c int c = max(a, b); ``` 这是一个...

    深入掌握Python中的关键字参数调用函数

    在Python编程中,函数的调用可以通过多种方式实现,其中关键字参数调用是一种非常灵活且强大的方法。它允许我们在调用函数时,通过指定参数的名称来传递值,而不是仅仅依赖参数的位置。这种调用方式不仅提高了代码的...

    黑马程序员python基础班教程笔记:(33)函数简介.pdf

    2. 函数的调用:定义好函数之后,可以通过函数名加括号的方式调用函数,括号内可以传递实际的参数,实际参数的值会被传递给形式参数。例如: ```python my_function(arg1, arg2) ``` 3. 参数类型:在Python中,...

Global site tag (gtag.js) - Google Analytics