当前位置路径作为 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>
我需要将公司网站上的 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>