如何从脚本标记中读取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选择器中获取该元素

顺便说一句,这可以在不需要iframesajax

由于您可以使用外部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