Javascript - 相同的函数不以相同的方式运行

Javascript - equal functions do not behave in the same manner

如果在 html 中单击(鼠标左键)test.jpg,

对于 代码 1:在新选项卡中打开一个空白页面。 (糟糕的结果)

对于 代码 2:test.jpg 页面在新选项卡中打开。 (好的)


Code1 : used opek.window (等于开到 open.window)

<script>
window.opek = function(x,y,z){window.open(x,y,z)}

function onlyyou(url){
var NowWindow=window.opek('','_blank','')
NowWindow.document.write('<img src='+url+'>')
}

</script>

<img src="test.jpg" onclick="onlyyou(this.src)">

Code2 : 使用 open.window

<script>
window.opek = function(x,y,z){window.open(x,y,z)}

function onlyyou(url){
var NowWindow=window.open('','_blank','')
NowWindow.document.write('<img src='+url+'>')
}

</script>

<img src="test.jpg" onclick="onlyyou(this.src)">

对我来说,它看起来 window.opek 等于 window.open.

但为什么 代码 1 的行为方式不同?

实际上我创建了一个函数,包含window.open。创建的函数无法正常工作。因此,我深入挖掘,发现即使是看起来完全相同(至少对我而言)的函数也不会以相同的方式工作。

那是因为在您的 代码 1 中您没有 returning window objectback。将您的函数更新为 return new window 它将起作用:

<script>
  window.opek = function(x,y,z){ return window.open(x,y,z); }

  function onlyyou(url){
    var NowWindow=window.opek('','_blank','')
    NowWindow.document.write('<img src='+url+'>')
  }

</script>