如果我在Google文档电子表格中发布图表,我会获得以下代码来访问该图片:
<script type="text/javascript"
src="//ajax.googleapis.com/ajax/static/modules/gviz/1.0/chart.js">
{"dataSourceUrl":"//docs.google.com/spreadsheet/tq?
key=...&transpose=0&headers=1&range=A1%3AC72&gid=0&pub=1","options":{"vAxes":...}}
</script>
显然,javascript程序将文本作为参数获取。
但是,在HTML定义(http://www.w3.org/TR/html4/interact/scripts.html)中:“如果src具有URI值,则用户代理必须忽略元素的内容并通过URI检索脚本。”
(编辑:如下面的评论所述,已经讨论并同意Google使用DOM访问内容 - 这是不值得推荐的。)
但问题:如何将参数作为有效的XHTML来逃避?谷歌似乎没有考虑到有人想在标签之间添加CTYPE定义。此代码不起作用:
<script type="text/javascript"
src="//ajax.googleapis.com/ajax/static/modules/gviz/1.0/chart.js">
<![CDATA[
{"dataSourceUrl":"//docs.google.com/spreadsheet/tq?
key=...&transpose=0&headers=1&range=A1%3AC72&gid=0&pub=1","options":{"vAxes":...}}
]]>
</script>
答案 0 :(得分:0)
在运行脚本的时间点,该脚本元素将是页面上的最后一个脚本元素。所以外部文件可以很容易地调用这样的东西:
var s = document.getElementsByTagName('script'); s = s[s.length-1];
var input = JSON.parse(s.textContent);