在运行时生成包含自定义语言的脚本块

Generate script block containing custom language at runtime

本文关键字:语言 脚本 自定义 包含 运行时      更新时间:2023-09-26

我在我的页面中包含了一个时髦的脚本(来自德国社交网络VZ),它要求我插入一个包含自定义"语言"的脚本块:

<script type="vz/login">
    client_id : c47a1d7f134b88c9f12448e08f2ef7289e9fc8
    redirect_uri : http://game.example.com/vzcallback.html
    callback : logResponse
    fields : emails,gender,birthday
</script>

我可以在运行时使用Javascript(没有PHP或其他服务器端代码)将这样的块插入到我的页面中吗?我需要这个来动态设置client_id

此外,我还需要插入类似的内容:

<script src="https://secure.studivz.net/Js/id/v4/library.js" 
    data-authority="platform-redirect.vz-modules.net/r"
    data-authorityssl="platform-redirect.vz-modules.net/r" type="text/javascript">
</script>

但我不认为添加这些data-属性将是一个艰巨的挑战。

是的,

var el = document.createElement("script");
el.setAttribute("type","vz/login");
el.innerHTML = "client_id : "+new_client_id
               +"'nredirect_uri : http://game.example.com/vzcallback.html"
               +"'ncallback : logResponse"
               +"'nfields : emails,gender,birthday";
document.body.appendChild(el);

对于第二次剪切使用

var headID = document.getElementsByTagName("head")[0];         
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.src = 'https://secure.studivz.net/Js/id/v4/library.js';
newScript.setAttribute("data-authority","platform-redirect.vz-modules.net/r");
newScript.setAttribute("data-authorityssl", "platform-redirect.vz-modules.net/r");
headID.appendChild(newScript);

您可以在运行时将vz/login脚本节点添加到dom中。但您需要确保vz/login节点已在查找它的JS之前添加