首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用JavaScript获取# URL值

如何使用JavaScript获取# URL值
EN

Stack Overflow用户
提问于 2022-08-14 18:19:56
回答 3查看 63关注 0票数 0

我不能在我的https://example.com/?l=http://example2.com工作服务器上使用url查询CloudFlare。

所以,我的问题是,如何将这个JS脚本转换为使用https://example.com/#http://example2.com

代码语言:javascript
代码运行次数:0
运行
复制
function getUrlVars() {
    var vars = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,    
    function(m,key,value) {
      vars[key] = value;
    });
    return vars;
  }      

var l = getUrlVars()["l"];

根据jp-jee的答复,这是我的脚本:

代码语言:javascript
代码运行次数:0
运行
复制
            <script>
var hash = window.location.hash;
    function change(){
        var txt = hash.replace("#", "");
        document.getElementById("url").value = txt;
    }
    
     </script>
          
           <input onclick="change()"  name="url" type="text" id="url" placeholder="enter url here" value="enter url here" />
           <button id="submit" onclick="submitURL()">Submit</button>

谢谢:)

EN

回答 3

Stack Overflow用户

发布于 2022-08-14 18:31:54

使用window.location.hash并从结果中删除#字符。

对于URL https://example.com/#http://example2.comwindow.location.hash将转到"#http://example2.com"

票数 1
EN

Stack Overflow用户

发布于 2022-08-14 19:17:19

它后面的#和文本称为“片段”或“散列”。URL类将其放入属性.hash中。

但是,有一个不同的问题:该文本不是在常规HTTP中发送到服务器的--它只保存在浏览器中。这意味着您无法在Cloudflare code或任何其他服务器端代码中看到此值。如果要使用#进行导航,则必须在客户端浏览器中实现导航。

票数 1
EN

Stack Overflow用户

发布于 2022-08-20 18:07:34

由于您使用的是Cloudflare工作者,所以它的工作方式类似于nodeJS或任何其他服务器端应用程序。这意味着您将无法访问window.*document.*对象。

如果您试图替换占位符,您应该使用的是.placeholder而不是.value,您可以在文档的头或正文中添加此脚本和您的工作人员

代码语言:javascript
代码运行次数:0
运行
复制
<script>
var hash = window.location.href;
var txt = hash.replace("#", "");
document.getElementById("url").placeholder= txt;
</script>

这样,一旦页面加载,浏览器就会执行脚本&占位符将被修改。

或者,您也可以使用Cloudflare工作者通过将HTML模板更改为

代码语言:javascript
代码运行次数:0
运行
复制
<input onclick="change()"  name="url" type="text" id="url" cloudflare_placeholder="enter url here" value="enter url here" />

现在,从您的工作人员,您可以将文本替换为

代码语言:javascript
代码运行次数:0
运行
复制
intercepted_html = intercepted_html.replace('cloudflare_placeholder=\"enter url here\"', 'placeholder=\"${host}/${pathname}\"')

有关如何使用Cloudflare工作者修改响应的示例。云焰响应修正

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73354135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档