<commit_before>---
layout: post
title:  html基础记录
date:   2017-06-05 23:21:00 +0800
categories: notes
tag: html
---

* content
{:toc}

<commit_msg>window.open不重复打开页签<commit_after>---
layout: post
title:  html基础记录
date:   2017-06-05 23:21:00 +0800
categories: notes
tag: html
---

* content
{:toc}

## window.open不重复打开页签

最近遇到的需求，要求已经打开的页签，不再重复打开，避免建立的websocket推送有问题。
之前看过扩展，知道是可以拿到并控制页签的，还没研究过web
查看了一下文档，发现原生的属性就可以完成。
[window.open](https://developer.mozilla.org/zh-CN/docs/Web/API/Window/open)
官方的参数如下

>## 语法

>`let windowObjectReference = window.open(strUrl, strWindowName, [strWindowFeatures]);`
>
>strUrl === 要在新打开的窗口中加载的URL。
>
>strWindowName === 新窗口的名称。
>
>strWindowFeatures === 一个可选参数，列出新窗口的特征(大小，位置，滚动条等)作为一个DOMString

>## 参数与返回值

>**WindowObjectReference**
>打开的新窗口对象的引用。如果调用失败，返回值会是 null 。如果父子窗口满足“同源策略”，你可以通过这个引用访问新窗口的属性或方法。
>**strUrl**
>新窗口需要载入的url地址。strUrl可以是web上的html页面也可以是图片文件或者其他任何浏览器支持的文件格式。
>**strWindowName**
>新窗口的名称。该字符串可以用来作为超链接 `<a>` 或表单 `<form>` 元素的目标属性值。字符串中不能含有空白字符。注意：`strWindowName` 并不是新窗口的标题。
>**strWindowFeatures**
>可选参数。是一个字符串值，这个值列出了将要打开的窗口的一些特性(窗口功能和工具栏) 。 字符串中不能包含任何空白字符，特性之间用逗号分隔开。参考下文的位置和尺寸特征。
>**说明**
>open() 方法，创建一个新的浏览器窗口对象，如同使用文件菜单中的新窗口命令一样。strUrl 参数指定了该窗口将会打开的地址。如果strUrl 是一个空值，那么打开的窗口将会是带有默认工具栏的空白窗口（加载about:blank）。
>
>注意：调用window.open()方法以后，远程 URL 不会被立即载入，载入过程是异步的。（实际加载这个URL的时间推迟到当前脚本块执行结束之后。窗口的创建和相关资源的加载异步地进行。）
>
其实比较符合需求的是这一句
>如果已经存在以 strWindowName 为名称的窗口，则不再打开一个新窗口，而是把 strUrl 加载到这个窗口中。在这种情况下，方法的返回值是这个已经打开的窗口，并忽略参数 strWindowFeatures 。strUrl设为空字符串时，可以在不改变窗口地址的情况下获得一个已经打开的同名窗口的引用。如果要在每次调用 window.open()时都打开一个新窗口，则要把参数 strWindowName 设置为 _blank。

所以只需要设置名称即可。
{'fraction_non_alphanumeric': 0.13545568039950062, 'fraction_numerical': 0.02247191011235955, 'mean_word_length': 9.546052631578947, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 28, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2397087', 'n_tokens_mistral': 1097, 'n_tokens_neox': 1249, 'n_words': 87}