`
wezly
  • 浏览: 485175 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

javascript地址栏写法

 
阅读更多

0. 前言

所谓IE地址栏表达式,就是在IE的地址栏中输入 javascript:<代码>,执行某些功能,来动态改变原有页面的参数以达到某些目的,例如开放被禁止的按钮、显示原本隐藏的图片等等。本文将就IE地址栏的使用方法做一个详细的说明。

 

1. 表达式的书写方法

在IE的地址栏中输入 javascript:<代码>,即可在当前页面上直接执行指定的代码并立即看到效果。而且,<代码>中可以包含多条语句,甚至可以包含 if/for 等流程控制语句。

代码一般有两种写法:

javascript:<表达式>

该写法将会执行表达式,并将表达式的结果在当前页面内显示。

javascript:<函数>

该表达式将会执行指定的函数,而当前页面的显示不会受到影响。

那么IE如何区分地址栏中输入的代码到底是函数还是表达式?其实很简单,代码的最后一条语句以参数列表 () 结束,则作为函数处理,不更新页面显示;代码的最后一条语句不以 () 结束,则作为表达式处理,在当前页面内显示表达式的计算结果。

例如,在IE的地址栏中输入:

javascript:1+2

该表达式的末尾并非参数列表,因此IE将1+2看作表达式,执行结果将显示在当前窗口内:

3

而下面这段代码:

javascript:alert("Hello, world!")

代码末尾为参数列表,因此IE将其看作函数,执行之后将出现弹出窗口,但是网页的内容不会有任何变化。再如,

javascript:alert

该代码执行后,当前窗口内显示:

[object]

这是因为代码末尾不是参数列表,因此IE将其作为表达式来处理。alert 为 window 对象的一个方法,也算作“[object]”,所以出现了上面的结果。

再看下面的例子:

javascript:a=1;b=2;c=3;alert(a+b*c)

虽然该段代码中包含了赋值表达式和alert()函数,但由于代码最末尾是参数列表,因此页面内容不会更新。

2. 将表达式转化为函数

通常我们希望使用 javascript:<函数> 这种格式,因为 javascript:<表达式> 会改变页面内容而使得修改失去意义。但有时我们不得不使用赋值表达式来达到目的,这就需要将表达式转换为函数来执行。这就需要利用一个特殊的函数:void()。该函数带有一个参数。

比较常用的转化方式有两种。一种是将表达式作为void()函数的参数,例如:

javascript:void(a=1)

执行之后页面内容没有任何变化,但是页面内名为a的变量已经赋值为1了。另一种方法是在整个代码的最后执行void()函数,例如:

javascript:a=1;void(0)

也可以达到同样的效果。

在网上通常可以找到一些网页的hack代码,例如:

javascript:void(document.all.btn1.disabled=false);void(document.all.btn2.disabled=false)

该段代码对每一个表达式执行了一次 void()函数。实际上有更简单的方法,只需要执行一次即可:

javascript:document.all.btn1.disabled=false;document.all.btn2.disabled=false;void(0)

3. 常用hack代码

这里介绍一些常用的 hack 代码段,大家可以灵活运用。

3.1 查找页面内元素

使用 document 对象的 all 集合和 getElement 系列方法可以轻易地找到页面上各种元素。如果知道一个元素的id(假设为myelement),则可以通过下面两种方式获得该元素:

document.all.myelement
document.getElementById('myelement')

如果不知道元素的id,但知道元素的HTML标签名(假设为TAGNAME),则可以通过下面的代码获得所有相同标签的元素:

document.getElementsByTagName('TAGNAME')

返回值为一个集合,通过该集合的 item 方法可以获取其中的一个元素。例如,修改页面上的第三个超链接的颜色为绿色:

javascript:document.getElementsByTagName('A').item(2).style.color="green";void(0)

将页面上所有的 TD 元素的背景颜色修改为红色:

javascript:tds=document.getElementsByTagName('TD');
for(i=0;i<tds.length;i++){tds.item(i).style.backgroundColor="red";}void(0)

 

 

3.2 定义函数

可以在地址栏中直接书写function语句来定义函数。例如,先在地址栏中输入:

javascript:function hello(){alert("Hello!");}

确定之后,再次在地址栏中输入:

javascript:hello()

即可看到弹出窗口。

3.3 显示效果类特效

通过各个元素的 style.zoom 属性可以设置该元素的显示比例。例如,将页面整体显示比例扩大为150%:

javascript:document.style.zoom='150%';void(0)

通过各个元素的 style.display 和 style.visibility 属性可以显示/隐藏该元素。style.display=""可以显示元素,style.display="none"可以隐藏元素,而且被隐藏的元素不会占用页面位置,就像根本不存在一样;style.visibility=false可以隐藏元素,但是被隐藏的元素还会保持原有的位置和大小;style.visibility=true可以显示元素。例如,隐藏所有图片:

javascript:a=document.getElementsByTagName('IMG');
for(i=0;i<a.length;i++)a.item(i).style.visibility=false;void(0)

 3.4 其他

显示页面所有链接:

javascript:a=document.getElementsByTagName("A");
newwindow=window.open("newwindow");
newwindow.document.open();
for(i=0;i<a.length;i++){
 newwindow.document.write("<a href=';"+a.item(i).href+"'>"+a.item(i).innerText+"</a><br>");
}
newwindow.document.close();void(0)

  

分享到:
评论

相关推荐

    107个常用Javascript语句参数写法

    `window.location.href = "URL"`用于改变当前窗口的URL地址。 ### 25. 计算表单数量 `document.forms.length`返回文档中表单的数量。 ### 26. 关闭输出流:`document.close()` 在动态生成页面内容后,使用`...

    JAVASCRIPT.PDF

    浏览器执行JavaScript的原理主要分为以下步骤:用户在浏览器地址栏输入URL请求访问页面,浏览器将此请求发送到Web服务器;服务器响应请求,发送包含JavaScript脚本的HTML文档到客户端浏览器;然后,浏览器逐行解析...

    IT公司面试笔试题库腾讯Javascript面试题.doc

    因为在浏览器的地址栏中,需要使用 javascript: 协议来执行 Javascript 语句。 第 10题:以下哪个语句打印出来的结果是 true?正确答案是 (C) alert(typeof(null) === typeof(window));。因为在 Javascript 中,...

    javascript 实现弹出小窗口

    - **重复强调**:在描述中重复了“JavaScript 实现弹出小窗口”六次,虽然这种写法在实际文档中较为少见且不推荐,但从这里可以推断出文章的重点在于详细介绍这一功能的实现方式。 - **核心知识点**:通过 ...

    javaScript集合2

    表示注释的写法,`//`后跟注释内容。 3. **HTML文档结构:** ```javascript ͳHTMLĵ˳:document-&gt;html-&gt;(head,body) ``` HTML文档的基本结构,依次为`document`、`html`元素以及其中的`head`和`body`元素。 ...

    IT公司面试笔试题库-腾讯Javascript面试题.doc

    可以通过 `javascript:` 协议在地址栏执行 JavaScript 代码。 - (B) 正确。使用 `//` 和 `/* */` 进行单行或多行注释。 - (C) 正确。`NaN` 表示不是一个数字。 - (D) 错误。变量名中不能包含 `*`。 ### 问题10:...

    Area 区域实现post提交数据的js写法.docx

    1. **模拟POST提交隐蔽地址栏的参数**:使用`$.ajax`或`$.post`,可以避免POST数据出现在浏览器的地址栏,增加了数据的安全性。 2. **解决POST提交乱码问题**:确保服务器端和客户端都正确设置字符编码。在jQuery的...

    详解angular中通过$location获取路径(参数)的写法

    -angular 中通过 $location 获取路径(参数)的写法 Angular 中的 `$location` 服务提供了获取和修改 URL 的功能,包括获取当前完整的 URL 路径、当前 URL 路径、子路径、协议、主机名、端口、哈希值和参数等。下面...

    精通javascript

    3.在浏览器中输入下述地址:http://localhost/1.2.htm • 1.1.htm 多段代码相互调用 • 1.2.htm [removed]与 • 1.3.htm 调用外部JavaScript文件 • 1.3.js 1.3.htm使用的外部JavaScript...

    设为主页跳转代码大全

    函数体内部通过`window.location.href`属性来改变浏览器地址栏中的URL,从而实现页面跳转。 #### 2. 超链接结合`goUrl`函数 ```html &lt;a href="javascript:;" onclick="javascript:goUrl('http://www.sina.com');"&gt;...

    精通JavaScript

    3.在浏览器中输入下述地址:http://localhost/1.2.htm • 1.1.htm 多段代码相互调用 • 1.2.htm &lt;script&gt;与 • 1.3.htm 调用外部JavaScript文件 • 1.3.js 1.3.htm使用的外部JavaScript...

    url地址自动加#号问题说明

    当你在浏览器地址栏输入一个带有#的URL,如`http://example.com/#top`,浏览器会滚动到页面中ID为`top`的元素位置。这是HTML锚点的基本功能,用于在长页面内部导航,无需刷新页面就能快速定位到页面的某个部分。 在...

    Area 区域实现post提交数据的js写法

    注意,为了保证用户隐私和数据安全,通常会使用`POST`请求来提交敏感数据,因为GET请求会在浏览器的历史记录和地址栏中显示请求参数,容易被截取。而在实际应用中,可能还需要添加错误处理机制,如设置超时、处理...

    JSP课程各章节选择题答案.pdf

    重定向在客户端进行,地址栏会显示新URL;转发是服务器内部操作,地址栏URL不变。两者有明显的区别,因此选项D描述错误。 13. 避免乱码通常需要设置响应的字符编码,使用`response.setCharacterEncoding()`方法可以...

    一些超经典的常用ASP代码

    这两段代码用于指定网站的图标,即浏览器地址栏中显示的小图标。`Shortcut Icon`是标准的图标链接,而`Bookmark`则是在用户的书签中显示的图标。 ### 五、禁用输入法输入 #### 代码实现: ```html ``` 此代码...

    jQuery前端开发实战教程.pdf

    9. jQuery 动画效果等效:`fadeIn()`方法以指定速度使元素渐显,等效的`animate()`方法写法是`$("div").animate({"opacity":"1"}, duration)`,其中`duration`是动画的持续时间。 10. EasyUI 结构:EasyUI的下载...

    HTML的一些小技巧

    若需隐藏浏览器地址栏,通常需要借助特定的浏览器插件或技术手段。 以上技巧覆盖了HTML页面开发中的多种常见需求,包括页面美化、交互功能增强、SEO优化等方面。合理运用这些技巧,可以使网页更加美观、功能更加...

    js常用方法及技巧

    1. **对象为空或找不到对象**:当出现这类错误时,通常是由于DOM元素的选择器(如id、name)写法不正确导致的。此时应检查错误所在的行,确保选择器的正确性。 2. **函数调用问题**:如果错误发生在函数调用上,...

    ASP中100个为什么

    - **查找URL路径**:如果未能在缓存文件中找到音乐文件,可以尝试查看网页源代码,找到音乐文件的URL地址。之后,可以使用“蚂蚁”(Ants)或其他FTP下载工具直接下载该URL指向的文件。 #### 2. 如何避免他人将您的...

    vue-antd-admin:基于vue3 + antd + JavaScript的后台系统

    vue-antd-admin欢迎使用vue-antd-admin,这是一个基于vue3.0 + antd2.0.0 + vuex4.0 + vue-router4.0的适合新手学习的项目,后台全部采用了composition API的写法,作者也只是个刚出学校的初级菜鸟前端,在vue3的...

Global site tag (gtag.js) - Google Analytics