You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何在浏览器控制台输入['Search: '-print``-'']会打开打印预览?

控制台特殊代码触发打印预览的原因及相关问题解析

一、触发打印预览的核心原因

这段代码能触发打印预览,本质是JavaScript标签模板语法和浏览器全局print方法的结合:

  • JavaScript的标签模板允许直接在函数名后紧跟模板字符串(无需括号)来调用函数,比如func``template等价于func(['template'],)。
  • print是浏览器全局对象(window)的内置方法,作用就是触发打印预览——不管传入什么参数,只要调用它就会弹出打印窗口。

拆解你输入的代码:print``- 这部分是标签模板调用,直接执行了print函数,这才是触发打印的关键。剩下的'Search: '、-、''等字符串拼接逻辑,根本不影响这个核心行为,因为print已经被调用了。

二、类似的触发情况

浏览器控制台里,任何全局内置方法都可以通过标签模板或常规调用触发对应行为,常见的例子有:

  • alert``hello:弹出警告框显示hello
  • confirm``are you sure?:弹出确认对话框
  • prompt``enter your name::弹出输入对话框
  • open``https://example.com:尝试打开新窗口访问指定地址(部分浏览器会拦截)
  • 当然直接输入print()、alert()这种常规调用,也会触发对应行为,只是写法没那么“奇怪”。

三、转义避免触发的方法

要避免触发,核心是不让print被解析成函数调用,有几种简单方法:

  1. 将print作为字符串内容处理,用反引号包裹:
    ['Search: '-`print```-'']
    
  2. 在print和模板字符串之间加空格,破坏标签模板结构:
    ['Search: '-print ``-'']
    
  3. 改用明确的字符串拼接写法,消除语法歧义:
    ['Search: ' + 'print' + '-']
    

内容的提问来源于stack exchange,提问作者Emanuele Mancari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:42:28