破解window.location.replace的行为,使用javascript而不是URL

时间:2016-02-02 13:49:43

标签: javascript jquery

是否有可能以某种方式破解window.location.replace的行为,启动JavaScript功能(让我们说alert)而不是让用户转到新位置?< / p>

我会给你举个例子,让我们说我们有这个功能:

setTimeout(function(){ window.location.replace("#SOMETHING_HERE#"); }, 900);

当用户点击特定按钮时会触发此操作; #SOMETHING_HERE#是占位符,管理员可以通过配置面板将URL放在那里。

现在,我们都知道客户很奇怪,我刚刚要求我找到一种方法来启动JavaScript而不是重定向用户,好吧,我被卡住了。当然我应该修改绑定到按钮的功能,但实际上我无法访问代码,唯一的切入点是我之前提到的那个面板,我只能更改#SOMETHING_HERE#的值。 有人提供了一些关于如何发出警报的线索(&#34; foo&#34;); ?这有可能吗?

答案也可能是&#34; NO&#34;我只是说他们我们必须找到改变代码的方法。

1 个答案:

答案 0 :(得分:8)

您可以在字符串前加javascript:

setTimeout(function(){ window.location.replace("javascript:alert('hello world!')"); }, 900);

这是有效的,因为location.replace的规范最终会出现在definition for "navigate",其中说:

  
      
  1. 如果需要,这是尝试获取资源的步骤。跳转到第一个合适的子步骤:
  2.         

    ...

         

    如果新资源是其方案为javascript的URL

         

    将任务排队以运行这些&#34; javascript:URL&#34;与导航的浏览上下文的活动文档相关联的步骤: