整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

HTML 中 target 属性的精彩应用

天, 我们来聊一聊 HTML 中 target 属性的精彩应用。 target 属性可让你控制链接 opening 的位置: 在当前窗口/标签页、新窗口/标签页中,或在框架/ifram 中。

什么是 target 属性?

target 属性是 HTML a 元素和 form 元素的属性。 它规定链接 URL 应该在何处显示: 在当前浏览器窗口、新选项卡/窗口中,或嵌入到 frameset 中的框架中。

下面是 target 属性可接受的值:

  • _blank: 在新窗口/选项卡中打开链接。
  • _self: 默认值。在相同的框架/ifram/窗口/标签页中打开链接。
  • _parent: 在父框架集中打开链接 (如果当前文档是在框架集中打开的)。
  • _top: 在整个浏览器窗口中打开链接 (如果当前文档是在框架集中打开的)。
  • framename: 在 frameset 中指定的框架中打开链接。

target 属性的实际应用

在新选项卡/窗口中打开链接

如果你希望在新选项卡/窗口中打开链接,请使用 target="_blank":

<a href="https://www.example.com/" target="_blank">点击打开新选项卡</a>

在新窗口中打开 PDF 文件

如果你有一个 PDF 文件,并希望在新窗口中打开它,可以使用 target="_blank":

<a href="https://www.example.com/document.pdf" target="_blank">点击打开新窗口中的 PDF 文件</a>

️在新选项卡中打开图片

如果你有一个大图片,并希望在新选项卡中打开它,请使用 target="_blank":

<a href="https://www.example.com/image.jpg" target="_blank">
  <img src="https://www.example.com/image-thumbnail.jpg" alt="Image thumbnail">
</a>

搜索表单中的 target="_blank"

如果你有一个搜索表单,并希望在新选项卡中打开搜索结果,请使用 target="_blank":

<form target="_blank" action="https://www.google.com/search" method="get">
  <input type="text" name="q" placeholder="输入搜索关键字">
  <input type="submit" value="搜索">
</form>

在父框架中打开链接

如果你有一个框架集,并希望在父框架中打开链接,请使用 target="_parent":

<frameset rows="50%,50%">
  <frame name="top-frame" src="top-frame.html">
  <frame name="bottom-frame" src="bottom-frame.html" target="_parent">
</frameset>

在顶级框架中打开链接

如果你有一个框架集,并希望在整个浏览器窗口中打开链接,请使用 target="_top":

his和e.target的异同

每次触发DOM事件时会产生一个事件对象(也称event对象), 此处的参数e接收事件对象。

而事件对象也有很多属性和方法, 其中target属性是获取触发事件对象的目标, 也就是绑定事件的元素, e.target表示该DOM元素, 然后在获取其相应的属性值。

this和event.target的区别:

js中事件是会冒泡的, 所以this是可以变化的, 但event.target不会变化, 它永远是直接接受事件的目标DOM元素;

.this和event.target都是dom对象

e.target的用法

target定义:

target 属性规定哪个 DOM 元素触发了该事件。

target 事件属性可返回事件的目标节点(触发该事件的节点),如生成事件的元素、文档或窗口。

语法:

event.target

event.target.nodeName   //获取事件触发元素标签名(li,p,div,img,button…)

event.target.id      //获取事件触发元素id

event.target.className  //获取事件触发元素classname

event.target.innerHTML  //获取事件触发元素的内容(li)

jquery: this 与 e.target区别:

this会冒泡, e.target不冒泡就是指向事件触发的dom。

Rust 编程语言中,target 目录是由 Cargo(Rust 的包管理和构建工具)自动生成的。它主要用于存放构建输出的产物文件相关的编译期产生的中间文件等。但是 target 目录往往会非常大,即使一个简单的 hello world 程序,就已经达到 9 MB 了。

可能一个比较简单的项目,会达到 1 GB 多。甚至有些网友调侃——如果电脑硬盘太小,可能学不了 Rust。

0x01 指定 target 目录

另外当电脑中的 Rust 项目太多时,无法管理 target 目录。其实我们可以指定所有项目统一的 target 目录。下面将以 Windows 操作系统为例演示。

首先在 C:\Users\用户名\.cargo\ 目录下,找到 config.toml 文件。如果在该目录下没有 config.toml 文件,则需要创建该文件。如下图所示:

注意:config 文件也有可能没有扩展名,如 config,又或者是其它扩展名,如 config.txt,配置文件的扩展名不重要,重要的是文件名称必须是 config

在文件中添加下面的配置信息:

 [build]
target-dir = "D:/my-target"

上面的配置是指定所有项目的统一 target 目录为 D:/my-target。如下图:

我们再次编译项目,查看项目根目录和 D:/my-target 目录,如下图:

可以看到,在项目的工程目录已经没有 target 目录,真正的 target 目录已经被我们指定为 D:/my-target 目录了。

0x02 target 目录有什么

下面是一个简单项目的 target 目录,让我们看下它会包含什么呢?

target 目录包含以下几个子目录和文件:

target/debug:

  • 存储调试模式下构建的可执行文件和库文件。
  • 包含中间编译产物,如对象文件(.o 文件)和生成的二进制文件。

target/release:

  • 存储发布模式下构建的可执行文件和库文件。
  • 与调试模式相比,发布模式进行了优化,生成的二进制文件通常更小且运行速度更快。

target/doc:

  • 存放项目文档(通常是通过 cargo doc 命令生成的 HTML 文档)。

target/.fingerprint:

  • 存储构建的指纹文件,用于跟踪哪些文件已经被编译以及是否需要重新编译。

target/package:

  • 存放项目打包后的文件,通常用于 cargo publish 命令发布到 crates.io 仓库。

其他临时文件和目录:

  • 包括构建缓存、生成的汇编代码等。

0x03 指定 target 目录的优缺点

统一存放 target 文件既有优点也有缺点:

优点

缓存复用

如果多个项目使用相同的依赖库,通过指定一个共享的 target 目录,可以复用编译缓存,减少重复编译的时间,大幅提升构建效率。

管理方便

通过将编译输出集中到一个特定目录,可以更方便地管理和清理编译输出文件。当 Rust 项目过多时,我们可以随时清理 target 文件。

缺点

多个项目共享同一个 target 目录可能会因为不同的依赖版本而产生冲突,当遇到冲突时需要及时清理 target 目录。

0x04 小结

总体上讲,指定 target 目录可以带来显著的构建效率提升,但也需要考虑潜在的版本冲突问题,这个需要根据实际的项目来取舍。