如何从脚本标记中读取JS作为数据?
我有一个外部文件(让我们说foo.js)
function baz() {}
然后在我的HTML中,我使用脚本标记导入它:
我希望能够从脚本标记内部获取JS的字符串。 我已经尝试过jquery的html(),以及innerHTML和innerText属性,但它们都返回空字符串。
注意:我正在尝试避免使用AJAX,因为我的服务器速度很慢,并且即使使用缓存也会减小网页的大小。
编辑:我想要的字符串将包含javascript文件中的数据,而不是其URL:
getJsData(document.querySelector('script[src="foo.js"]')) == 'function baz() {}'
我可能不完全理解它是什么以及为什么要实现它。 考虑到由于服务器问题导致您不想使用ajax
,您可以选择旧学校。 如果您的页面不是很重,您可以 –
-
在页面上放置一个隐藏的
iframe
,将其src指向您的JS文件。 -
等待在iframe中调用
$('document').ready()
,即让iFrame加载所有内容。 -
将其加载的iframe的内容复制到所需的HTML元素容器中。
希望这可以帮助!
在脚本标记中放入一个id,并从Jquery选择器中获取该元素
顺便说一句,这可以在不需要iframes
或ajax
。
由于您可以使用外部function; 只需在其上调用toString()
。 例如:
window.console.log(baz.toString());
这是一个示例,演示了想要做这种事情的典型正当理由以及它的局限性:
var strMod=GameOfLife.toString(); //real shenzi prettification lol (strMod.indexOf(";var")>-1) && (strMod=strMod.replace(/;/g, ";\t\n")); var nodeCtr=document.getElementById('code-block'); var nodeCodes=document.createElement("pre"); nodeCodes.classList.add("code-snippet"); nodeCtr.appendChild(nodeCodes); nodeCodes.innerHTML="var GameOfLife="+strMod; SyntaxHighlighter.highlight({brush: "js"}, nodeCodes);
body { background-color:#131313; } a:link, a:visited { color: rgba(185, 176, 218, 0.78); text-decoration: none; } a:hover, a:focus { color: rgba(41, 129, 241, 0.78); cursor: pointer; cursor: hand; text-decoration: underline; } #code-block { max-width:800px; overflow:auto; } #code-block .syntaxhighlighter { margin:20px; font-size:10px!important; overflow:visible!important; }
Conways Game of Life ~ js-stylee! ~ by Matthew Ruten