我想为 html 模板设计器提供静态 javascript 代码块,它可以是:
- 内联或外联或两者兼而有之
- 在 html 模板中使用一次或多次
每个 block 都可以确定其在模板中相对于其他 JavaScript 代码块的位置。
一个例子是使用 JavaScript 提供的图像横幅。我将代码提供给模板设计者,模板设计者将其放置在两个位置,一次用于标题中的水平横幅,一次用于垂直横幅。相同的代码在两个 block 中运行,但了解它们的位置可以确定是否提供水平或垂直图像横幅。
有道理吗?
另一个例子:假设您在网页中有相同的 2 个 javascript 标签,调用服务器上的外部脚本。服务器和/或脚本可以确定它属于哪个 javascript 标签吗?
注意:我们可以说这是一个挑战吗?我知道我可以很容易地避免这个难题,但我经常遇到这个问题。
最佳答案
JavaScript代码可以定位所有<script>
页面上的元素,它可以检查属性和内容以检查它来自哪个元素。但这可能不是您想要的。
您想要的是一段 JavaScript,它可以用广告横幅替换页面上的标签。通常的解决方案是添加一个特殊元素,例如 IMG
,为此并给出IMG
一个id
或class
或者甚至是自定义属性(如 adtype="vertical"
),然后使用 JavaScript 来定位这些元素并通过更改 src
来替换内容属性。
例如,使用 jQuery,您可以像这样创建图像:
<img src="empty.gif" width="..." height="..." class="ad" adtype="..." />
然后您可以使用以下命令找到每个图像
$('img.ad')
[编辑] 嗯,服务器显然知道哪个脚本属于哪个脚本标记,因为它插入了脚本。所以这是理所当然的。
如果脚本想要找出它在 DOM 中的位置,请添加一些可用于识别自身的内容,例如:
<script>var id= '329573485745';
然后你就可以走遍 script
标签并检查哪一个包含变量 id
的值.
如果您调用外部脚本,则可以执行相同的操作,但必须在发出 HTML 时将 ID 添加到脚本标记:
<script id="329573485745" src="..." />
然后外部脚本可以检查 DOM 并查找具有此 id 的元素。顺便说一句,您将需要为此使用 UUID。
这样,一段JS就可以定位到将自己添加到页面中的script标签了。
关于JavaScript执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2560025/