问题标签 [yepnope]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jquery - 在 IE8 中,yepnope 在第一次尝试时未在 iframe 中加载资源
我正在使用 jQuery 模态对话,在我们嵌入 iframe 的对话中。iframe 包含按钮“显示搜索结果”
在第一次尝试“显示搜索结果”按钮单击时,没有任何反应。我的结果未在表中呈现(可能服务器请求未触发)。
它仅在我切换到浏览器的其他选项卡时出现,第二次正确呈现表格。
当 __run 函数在 IE8 中第一次调用时,getData(传递的函数)应该执行但不能执行它。
此问题特定于 IE8
如何处理上述问题?有什么快速的建议吗?
在 Firefox 和 Chrome 等其他浏览器中,一切正常。
如果我将模态标志更改为false,然后第一次尝试“显示搜索结果”按钮单击事件,我会在 IE8 中得到结果,但我们需要模态对话,所以这不是一个好的解决方案。
更新:添加了 Jquery UI 对话代码
还观察了IE8生成的html代码
IE8 或 yepnope 将带有 null 值的 onload 事件属性添加到脚本标记 Ex。
yepnope 加载的资源的第二次 onload 事件属性值发生变化,并且在网格中填充了搜索结果。前任。
希望得到最好的解决方案。
javascript - 运行 angular.js 作为回调(例如 $.ajax)
我正在编写一个应用程序,其中主要包含两个 javascript,resources_loader.js 和 app.js,其中第一个加载了 app.js 使用的一些 json 文件。
问题是:app.js(有 angular.js 的东西)应该只在 resources_loader.js 之后运行。我尝试在成功回调中运行角度代码(resources_loader 包含延迟),但这似乎效果不佳。这是我的 index.html:
考虑到我将 app.js 移动到了成功回调中的 resources_loader。每次我尝试运行它时,angular 都会引发以下异常Uncaught Error: No module: myapp
:
我的猜测是angular.module('myapp', [])
应该在 onload 事件之前运行,这里不是这样。
另一件事是我想在我的项目中使用 yepnope.js,如下所示:
app.js
包含角度代码。我认为它的性能更高,因为它仅在加载资源时才加载角度。但是我该怎么做呢?
modernizr - Modernizr Yepnope Css Fallback
I'm using a CDN to Load Bootstrap.css. My question is how can i check if CDN bootstrap was loaded/found. And if it wasn't, then load local Boostrap.
Here's Jquery fallback..
And this is how i load Modernizr than Css:
I have no idea how i could check if the css was loaded.. just like i did with modernizr and Jquery..
Thanks in advance...
javascript - 如何保持执行顺序?
至于 yepnope 1.5,我在他们的页面上读过:
具有相同 url 的脚本不会执行两次,但它们的回调会以正确的顺序触发
但是,执行顺序呢?它也保存了吗?还是取决于加载完成时间?
是以callback
正确的顺序执行 js 文件的唯一方法是什么?
jquery - yepnope 的正确脚本加载技术
所以我根据三种场景构建了一堆需要加载的脚本:
- 桌面
- 移动的
- 移动端完整站点(移动端桌面版)
我有一个 yepnope 函数,它测试移动浏览器(使用http://detectmobilebrowsers.com/),如果为 true,则加载 jQuery Mobile 和其他一些脚本文件,如果为 false,则加载特定的非移动脚本文件。但是,我注意到它强制将这些文件加载到 Modernizr 之上,这意味着它在 jQuery 之前加载。
如果用户想要查看桌面版本,我还有一个只能从移动设备设置的 cookie。如果设置了 cookie,它会忽略上面的脚本。
所以基本上我只是很难找出实现这些条件的最佳方法。
所有版本都需要 jQuery、各种库和一个主脚本文件。
桌面版本(和移动完整站点)还需要 jQuery UI 和非移动脚本文件。
移动版本需要 jQuery Mobile 但不需要 jQuery UI 以及一些额外的库和另一个特定的移动脚本文件。
我想我应该先检查一下jQuery.browser.mobile
,如果是真的检查 cookie。问题是我在脚本条件中插入 PHP 语句时遇到问题。它看起来像这样:
我还想上面的脚本必须作为 yepnope 加载 jQuery 的完整功能运行。
谁能给我一个关于这种情况的正确技术的想法?
作为一个附带问题,将 jQuery Mobile 和 jQuery UI 一起加载真的很糟糕吗?前者是否意味着在移动平台上(以某种方式)复制后者?加载 jQuery UI 只是浪费时间吗?
更新(见下面的评论):
我决定使用以下技术来检测四种类型的设备/设备状态;桌面、手机、平板电脑和手机上的桌面网站 (phonefull)。使用出色的Mobile Detect 类。
该class
变量被回显到<body>
标签中,以便在 CSS 和 JavaScript 中使用。
然后要使用设备变量,只需执行普通的 PHP if 语句:
jquery - 如果页面上已经有无法删除的内联 jquery 代码,则使用 yepnope
因此,CMS 中的高级用户(设计师/Web 开发人员)可能有权在其内容中添加内联 JavaScript/jQuery 代码,以执行某些操作,例如在 CMS 的特定页面上隐藏某些内容,$(function(){ $('#banner').hide() });
以及其他更高级的操作,例如添加他们在内容中添加的输入上的 jQuery UI 日期选择器。
我的问题是,如果 jQuery 及其依赖的插件是通过 YepNope 异步加载的(或者我也假设为 RequireJS)......那么当登陆该页面时,它会出错,因为 jQuery 库不可用(直到几微秒后它是加载)。
在这样的现有网站中引入像 YepNope 这样的类加载器以允许此内联代码保持不变的最佳方法是什么?
我最好的猜测是,如果想要一个 CDN/回退,然后像 HTMLBoilerplate 一样同步加载它(或者如果不需要 CDN 回退,只需通过脚本标签正常加载):
然后只将 yepnope 加载器用于页面上不需要使用的其他内容?
或者你能做一些技巧来延迟内联脚本的执行,直到 yepnope 完成加载?
javascript - 使用modernizr.js / yepnope.js 加载谷歌地图API
有没有人有任何工作代码允许使用modernizr.load 或yepnope 来加载Google Maps API?
我可以使用modernizr 加载JQuery 和GMap3,但是除非我制作传统的脚本标签,否则Google Maps API 不起作用。
逻辑告诉我我应该在删除脚本标签后进行以下更改:-
但是,如果我这样做更改地图不会加载,我现在在 Javascript 控制台中收到此错误:-
jquery - 如何在不使用 yepnope.js 应用的情况下预加载 css 文件?
我已经实现了一个样式表切换解决方案,其中样式表href
在单击时使用 jQuery 进行更改。
它工作正常,但在第一页加载时,在样式表之间切换时会出现闪烁,因为之前没有加载不同的 css 文件(一旦使用它们就没有闪烁)。
所以我使用yepnope.js来预加载 css 文件:
一切都按预期工作,只是在加载每个样式表时都在应用它。
无论如何预加载样式表而不实际应用它们?
编辑
我也试过:
在阅读了preload! Prefix
他们的文档页面后,但这似乎不起作用。
编辑 2
还尝试添加:
但它似乎没有效果。
jquery - 如何使用 AJAX 调用加载边缘动画?jquery getScript 失败
所以我试图通过 jQuerys $.getScript() 检索 Edge 动画,这与使用 dataType: 脚本调用 $.ajax 相同。
现在,如果我将脚本包含在脚本标记中,它可以正常工作,但是当我尝试通过 $.getScript() 加载和执行脚本时,什么也没有发生。(我没有收到任何错误,脚本和子脚本加载正常 - 但没有任何反应。)
有没有人尝试过这样做?我怀疑我在通过 AJAX 加载它时遇到问题,因为 Adobe 在 page_a_edgePreload.js 中使用了 yepnope。
我使用从 Adobe Edge 中找到的一个简单示例进行测试。如果您想在本地试用 - 打开编辑器并将以下内容保存到 wrapper.html 文件中:
然后在此处从 Adobe 下载示例 .zip 文件:http: //blogs.adobe.com/edge/files/2012/05/an15BootStrapExample.zip
将以下内容提取到与 wrapper.html 相同的文件夹中:
- edge_includes 文件夹
- page_a_edge.js
- page_a_edgeActions.js
- page_a_edgePreload.js
编辑
好的,所以我尝试按照 Alex 的建议在不通过 edgePreloader.js 的情况下加载文件。我可以访问 AdobeEdge,但如果我在成功加载脚本后写出合成,它会返回 undefined:
(我也用 setTimeout() 函数试过这个 - 结果还是一样)
<script src="..edgePreloader.js"></script>
如果我将脚本包含在常规标记中,则以下工作正常
我注意到 Adobe 在 edgePreload.js 上使用了闭包,看来我必须在这个闭包中加载 edge.1.5.0.js。我现在试图了解在这个闭包中哪些事件和特性是必不可少的,以使其正常工作。
javascript - 基于 JQuery 插件中的测试条件的 CSS 文件的条件加载
我正在寻找基于一组特定条件有条件地加载某些文件的最佳方法。
我有三个 CSS 文件和两个 javascript 文件,我目前正在加载如下:
很明显,第四个文件是 JQuery,第五个是我的 JQuery 插件。JQuery 插件内部有一系列类似于测试的函数,例如isMobile
、isRetina
、isPhone
等。但是,让我们关注isRetina
.
我要完成的工作如下:
- 首先加载 JQuery 和我的 JQuery 插件
- 使用
isRetina
我的 JQuery 插件中的函数来检查设备是否有视网膜显示 - 加载
core.min.css
add_regular.min.css
如果不是 Retina 显示则加载,如果add_retina.min.css
Retina 显示则加载
目前我正在加载所有三个 CSS 文件,我不想这样做,因为我有一堆其他 CSS 文件,我想加载它们,因为我的 JQuery 插件根据上面的示例确定哪个是最好的。例如,在使用插件的功能phone.min.css
进行另一次测试后,我可能想要加载一个。isPhone
我正在考虑使用YepNope
和做这样的事情:
但是,即使上述方法是正确的,我也不确定如何实现document.ready
,因为我的插件的构造函数只需要在 DOM 准备好时运行。
我想了解如何使用YepNope
或任何其他解决方案来解决这个问题。
干杯。