使用不同的数据属性值多次嵌入同一个web小部件
Embed same web widget multiple times with different data attribute values
我想创建一个web小部件,它可以在同一页面上多次嵌入,但具有不同的数据属性值,这样我就可以根据数据属性值显示不同的数据。
例如,我想多次嵌入mywidget.js文件,如下所示:
<body>
<div>
<script src="script/mywidget.js" data-sport="soccer" id="widget-soccer">
</script>
</div>
<div>
<script src="script/mywidget.js" data-sport="tennis" id="widget-tennis">
</script>
</div>
</body>
我的问题是,在mywidget.js中的代码中,我如何确定正确的脚本标记引用并读取它的数据属性,以便使用该值从web服务中获取相应的数据。我只使用jquery和javascript。
我希望这个小部件也能嵌入到其他用户的网站上,这样他们所做的就是只使用脚本标记进行嵌入,并传递所需的数据属性值,而不需要在他们的网站上添加任何额外的内容。
这不是一个很好的方法,因为它非常不灵活。但是,假设<script>
标记在未延迟时会在执行时停止对文档的解析,则当前脚本标记将是DOM中的最后一个;因此,您可以使用以下内容在脚本中获取当前的运动:
var sport = $('script').last().data('sport');
然而,最好在外部JavaScript文件中定义一个函数,然后在需要实例化小部件时调用它(EDIT:就像Lee Taylor的回答一样)。
为什么不做一些类似的事情:
<head>
<script src="script/mywidget.js"></script>
</head>
<body>
<div><script>createMyWidget({sport : "soccer"} );</div>
<div><script>createMyWidget({sport : "tennis"} );</div>
</body>
我认为你做不到。我知道它不是那么好,但我会尝试:
<div><script>sport = "soccer";</script><script src="script/mywidget.js" id="widget-soccer"></script></div>
<div><script>sport = "tennis";</script><script src="script/mywidget.js" id="widget-tennis"></script></div>
并在mywidget.js 中使用sport
另一种方法可能是,myscript.js实际上是一个动态的"页面",比方说使用php,然后可以使用src="script/mywidget.js?sport=swing",在php中打印:
sport = "<?php echo addcslashes($_GET['sport'], '"'); ?>";
但更好的是:
<script src="script/mywidget.js"></script>
<div><script>showWidget("soccer");</script></div>
<div><script>showWidget("basketball");</script></div>
我认为您可以使用jQuery来查找带有src="script/mywidget.js"或其他的所有脚本标记
$('script[src="script/mywidget.js"]')
然后,您将获得一组脚本标记,您可以循环使用这些标记,并使用jQuery的.data()
方法访问data
属性。
- Javascript:selenium Web驱动程序isDisplayed()不工作
- 在Web应用程序中使用Highcharts javascript
- WebDriverException:tinyMCE未在selenium Web driver java中定义
- Selenium Web驱动程序和javascript
- Windows形成web浏览器控件和Javascript更改的DOM
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- 为什么 .focus() 不起作用,而 .css(“color”,“red”) 在同一个选择器上起作用
- 如何将javascript事件从web浏览器wpf控件发送到wpf的c#代码
- Steam Web API:I'我不知道该如何处理这个看起来像哈希的url来生成图像
- 在调用speak之前预加载Web Speech API
- 如何在visualstudio中调试web api时编辑javascript文件
- 是否存在React Native“;WEB代码安全防护”;
- 如何在Ionic Android中将Javascript注入到web视图中
- 将复杂对象从angular js传递到web api,它总是返回404
- 基于api密钥的NodeJS web服务
- 使用不同的数据属性值多次嵌入同一个web小部件
- 为什么我的两个不同angularjs服务解析为同一个restful Java EE web服务
- 我们必须把ajax代码和web方法放在同一个asp.net页面中吗
- 同一个应用程序中的Web Project和WebService
- 如何在同一个web应用的多个实例中实时更新DOM