相关疑难解决方法(0)

预加载脚本没有执行

问题

为了提高页面性能,我需要预加载我需要在底页运行的脚本.

我想控制脚本何时被解析,编译和执行.

我必须避免脚本标记,因为它是常见渲染引擎(geeko等)的阻止程序.

我无法使用defer属性加载它,因为我需要控制脚本执行的时间.此外,异步属性不是可能的.

样品:

<html><head>
//preload scripts ie: a.js  without use the script
</head><body> ..... all my nice html here
//execute here a.js
</body></html>
Run Code Online (Sandbox Code Playgroud)

这允许我最大化我的页面的渲染性能,因为浏览器将开始下载脚本内容,并且它将同时呈现页面并行.最后,我可以添加脚本标记,以便浏览器解析,编译和执行代码.

我能做到的唯一方法是使用隐藏的图像标记.(这是斯托扬的简化版)

 <html><head>
 <img src="a.js" style=display:none;>
</head><body> ..... all my nice html here
 <script src="a.js">  
</body></html>
Run Code Online (Sandbox Code Playgroud)

我没有发现使用这种技术的任何问题,但有没有人知道更好的方法来做到这一点?有没有meta预取?

附加信息

我正在使用requirejs,所以我试图预加载模块代码而不执行它,因为这段代码依赖于DOM元素.

javascript browser performance requirejs

12
推荐指数
3
解决办法
1万
查看次数

脚本标记加载了type ="text/html"和src ="...",但被jQuery忽略

我的页面有一个标签:

    <script id='header' src='/Templates/Shared/Header.tmpl.html' type='text/html'></script>

Firebug告诉我Firefox 5正在请求此资源.在HTML选项卡上,我可以导航到script元素并看到它包含/Template/Shared/Header.tmpl.html的内容.

但是,jQuery坚持脚本标记为空.$('#header').html()返回一个空字符串.我不明白为什么.

是的,我可以使用$ .get()加载文件并使用$('#header').html(data)来设置内容.然后我可以按照我的预期使用它.这显然会产生第二个请求,我想避免.

firefox jquery firebug header jquery-templates

5
推荐指数
1
解决办法
5311
查看次数

如何从脚本标记中读取JS作为数据?

我有一个外部文件(让我们说foo.js)

function baz() {} 
Run Code Online (Sandbox Code Playgroud)

然后在我的HTML中,我使用脚本标记导入它:

<script type="text/javascript" src="foo.js"></script>
Run Code Online (Sandbox Code Playgroud)

我希望能够从脚本标记内部获取JS的字符串.我尝试过jquery的html(),以及innerHTML和innerText属性,但它们都返回空字符串.

注意:我正在尝试避免使用AJAX,因为我的服务器速度很慢,并且即使使用缓存也会减小网页的大小.

编辑:我想要获取的字符串将包含javascript文件中的数据,而不是其URL:

getJsData(document.querySelector('script[src="foo.js"]')) == 'function baz() {}'
Run Code Online (Sandbox Code Playgroud)

html javascript jquery

5
推荐指数
1
解决办法
550
查看次数

获取<script>标记的内容

我想<script>在html中获取标记的内容:

我可以<script>test</script>使用jquery 获取内容$("script").html().

但如何获得内容 <script src='something.js'></script>

html javascript jquery

4
推荐指数
1
解决办法
4559
查看次数