当前位置路径作为 url 参数

Current location path as a url parameter

我需要将公司网站上的 link 放到 surveymonkey 调查中。我们的网站使用专有的 CMS 限制我添加任何适当的功能或第三方插件。

在评估了 this other question 中公开的选项之后,我相信我调用了正确的 javascript 函数,但每次我打开我的 CMS 时,link 都会自我复制...导致我认为我做了不恰当的事情。

the JSFiddle demo 上的事情看起来可以接受我把这个问题放在一起,但我希望你有一个更优雅的解决方案,所以我可以尝试选项!

<script type="text/javascript">
document.write("<a href='https://www.surveymonkey.com/r/[SURVEYID]?url=" + window.location.pathname + " target='_blank'>Test - survey</a>");
</script>

试试这个 - 它可能不会一次性完成您想要的,但它有望隔离您的问题,以便您可以更好地查明问题所在:

HTML:

<div id="link"></div>

Javascript:

var SURVEYID = 3
var a = document.createElement("a");

a.innerHTML = "Test - survey";
a.href = "www.surveymonkey.com/r/" 
  + SURVEYID 
  + "?url=" 
  + window.location.pathname 
  + "&target=_blank"

document.getElementById("link").appendChild(a)

恐怕可能有很多地方出错了,但我希望您现在可以区分 URL 的各个部分。

这主要只是一种理论,因为我不知道你的 CMS 或它是如何工作的,但我假设 CMS 正在内联 javascript,执行它,并将其保留为它的内容连同剧本。这会造成重复。我想使用 document.write 的初衷是完全替换内容;但如果它是内联的,它只会追加。外部脚本将完全取代。见下文:

All of this text is retained.
<script type="text/javascript">
document.write("<a href='https://www.surveymonkey.com/r/[SURVEYID]?url=" + window.location.pathname + "' target='_blank'>Test - survey</a>");
</script>

在此演示中,我们使用 document.body.innerHTML 代替。这将完全替换内容。

None of this text will be retained.
<script type="text/javascript">
document.body.innerHTML = "<a href='https://www.surveymonkey.com/r/[SURVEYID]?url=" + window.location.pathname + "' target='_blank'>Test - survey</a>";
</script>

如果为真,完全替换正文内容是您的目标,innerHTML 可能就是您所需要的。

编辑 + 警告:

这可能会导致无法从 CMS 访问该页面,具体取决于它的构建方式。可能无法编辑页面。

编辑

这是一个更好的解决方案。只需先通过 ID 获取锚点的 href 即可。这是基于 .

<a href="#" id="__smlink" target='_blank'>Test - survey</a>
<script>
 document.getElementById('__smlink').href = "https://www.surveymonkey.com/r/[SURVEYID]?url=" + window.location.pathname;
</script>