LinkedIn使用JS SDK做了什么样的魔术?脚本体和src存在,加上奇怪的格式

问题描述 投票:2回答:1

我想在我的页面上集成LinkedIn共享。

阅读LinkedIn提供的文档:https://developer.linkedin.com/docs/getting-started-js-sdk

..我很惊讶地看到他们在我页面的head部分需要这个脚本标记

<script type="text/javascript" src="//platform.linkedin.com/in.js">
    api_key:   [API_KEY]
    onLoad:    [ONLOAD]
    authorize: [AUTHORIZE]
    lang:      [LANG_LOCALE]
</script>

我不知道这里发生了什么。首先,w3schools说“”“注意:如果存在”src“属性,则元素必须为空。”“(https://www.w3schools.com/tags/tag_script.asp)。我也去了这里:https://html.spec.whatwg.org/multipage/scripting.html#the-script-element(我不是100%肯定这是多么权威......但看起来权威的格式和长度:P) - 它还说那里如果有一个src属性,那么身体应该基本上是空的 - 无论如何 - 这两个资源无法解释LinkedIn的脚本语法。

那么有谁知道脚本体语法是什么?那些JS标签?如果是这样,我不知道它们是如何被使用的。我认为标签与continue / break语句一起使用,以摆脱循环。我不明白LinkedIn的API如何通过我提供的语法来获取我的信息。脚本体以某种方式被提供给脚本,它自己解析它吗?

有人可以向我解释发生了什么事吗?

谢谢!

javascript html linkedin
1个回答
1
投票

你说的是对的。添加src属性时,不会执行script的主体。然而,有一种方法来解决这个问题。那是通过检索脚本标签,提取innerHTML并在其上使用eval。当然,您需要在准备好文档时执行此操作。

我不知道LinkedIn是如何做到的,但HTML标准并没有改变它们,也没有加载的顺序,所以要么使用类似于我解释的东西,要么使用更聪明的方法来解析脚本的主体。

需要考虑的其他注意事项:您可以将其绑定到库中,而不是使用文档就绪事件。在检索最后一个可用的脚本标记,并在加载库时提取主体,这将是以任一方式加载的最后一个元素,因此您应该能够在不使用任何事件的情况下检索代码。 (这需要测试,但DOM元素是同步加载的,自上而下的方法)。

显然不建议使用eval,它很慢,但绝对提供您正在寻找的功能。

PS。原谅任何格式错误。我正在从距离家2英里的移动设备上打字。否则,我会非常高兴甚至提供一些示例代码片段并自己进行上述测试。

© www.soinside.com 2019 - 2024. All rights reserved.