代码之家  ›  专栏  ›  技术社区  ›  gerdemb

javascript中window.open()的正确编码

  •  1
  • gerdemb  · 技术社区  · 15 年前

    当使用 window.open() 在javascript中?首先我用的是

    var href = "http://127.0.0.1:8000/etf/admin/escola/t34atividade/?pop=1&copy=1";
    var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
    

    IE8开放: http://127.0.0.1:8000/etf/admin/escola/t34atividade/?pop=1©=1

    Firefox打开: http://127.0.0.1:8000/etf/admin/escola/t34atividade/?pop=1&copy=1

    var href = "http://127.0.0.1:8000/etf/admin/escola/t34atividade/?pop=1&copy=1";
    var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
    

    IE8开放: http://127.0.0.1:8000/etf/admin/escola/t34atividade/?POP=1©=1

    Firefox打开: http://127.0.0.1:8000/etf/admin/escola/t34atividade/?pop=1&copy=1

    3 回复  |  直到 15 年前
        1
  •  2
  •   Pointy    15 年前

    对uri的每个部分使用javascript“encodeuricomponent”函数 uri语法的一部分(即分隔符斜杠、查询字符串的问号、参数分隔符和符号等)。

    uri编码是 与HTML转义相同。例如,在url中,不能将与号转义为 &

        2
  •  1
  •   Robusto    15 年前

    IE8似乎试图强制查询字符串参数 &拷贝=1 致实体 &复制; ,这是版权符号()那真的很有趣。就像微软用“帮助”拖累用户一样。

    pointy关于编码是正确的。还要注意的是,你没有一个代码缩小器,它可以删除一行中两个双斜杠(//)之后的所有内容;我以前见过那些破坏页面。

        3
  •  0
  •   gerdemb    15 年前

    我找到的最简单的解决办法就是停止使用 copy 作为get参数。问题是 &copy 实际上是版权符号的html实体。ie应用实体替换将其转换为符号,即使它是javascript代码。显然firefox不执行实体替换。根据这个博客中的一条评论,ie所做的可能是正确的,但是为了避免所有的混乱,我将我的参数重命名为 clone .

    http://nedbatchelder.com/blog/200812/accidental_html_entities_in_urls.html