问题标签 [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.

0 投票
1 回答
460 浏览

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 事件属性值发生变化,并且在网格中填充了搜索结果。前任。

希望得到最好的解决方案。

0 投票
1 回答
509 浏览

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包含角度代码。我认为它的性能更高,因为它仅在加载资源时才加载角度。但是我该怎么做呢?

0 投票
1 回答
564 浏览

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...

0 投票
0 回答
78 浏览

javascript - 如何保持执行顺序?

至于 yepnope 1.5,我在他们的页面上读过:

具有相同 url 的脚本不会执行两次,但它们的回调会以正确的顺序触发

但是,执行顺序呢?它也保存了吗?还是取决于加载完成时间?

是以callback正确的顺序执行 js 文件的唯一方法是什么?

0 投票
0 回答
352 浏览

jquery - yepnope 的正确脚本加载技术

所以我根据三种场景构建了一堆需要加载的脚本:

  1. 桌面
  2. 移动的
  3. 移动端完整站点(移动端桌面版)

我有一个 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 语句:

0 投票
1 回答
370 浏览

jquery - 如果页面上已经有无法删除的内联 jquery 代码,则使用 yepnope

因此,CMS 中的高级用户(设计师/Web 开发人员)可能有权在其内容中添加内联 JavaScript/jQuery 代码,以执行某些操作,例如在 CMS 的特定页面上隐藏某些内容,$(function(){ $('#banner').hide() });以及其他更高级的操作,例如添加他们在内容中添加的输入上的 jQuery UI 日期选择器。

我的问题是,如果 jQuery 及其依赖的插件是通过 YepNope 异步加载的(或者我也假设为 RequireJS)......那么当登陆该页面时,它会出错,因为 jQuery 库不可用(直到几微秒后它是加载)。

在这样的现有网站中引入像 YepNope 这样的类加载器以允许此内联代码保持不变的最佳方法是什么?

我最好的猜测是,如果想要一个 CDN/回退,然后像 HTMLBoilerplate 一样同步加载它(或者如果不需要 CDN 回退,只需通过脚本标签正常加载):

然后只将 yepnope 加载器用于页面上不需要使用的其他内容?

或者你能做一些技巧来延迟内联脚本的执行,直到 yepnope 完成加载?

0 投票
2 回答
1657 浏览

javascript - 使用modernizr.js / yepnope.js 加载谷歌地图API

有没有人有任何工作代码允许使用modernizr.load 或yepnope 来加载Google Maps API?

我可以使用modernizr 加载JQuery 和GMap3,但是除非我制作传统的脚本标签,否则Google Maps API 不起作用。

逻辑告诉我我应该在删除脚本标签后进行以下更改:-

但是,如果我这样做更改地图不会加载,我现在在 Javascript 控制台中收到此错误:-

0 投票
2 回答
853 浏览

jquery - 如何在不使用 yepnope.js 应用的情况下预加载 css 文件?

我已经实现了一个样式表切换解决方案,其中样式表href在单击时使用 jQuery 进行更改。

它工作正常,但在第一页加载时,在样式表之间切换时会出现闪烁,因为之前没有加载不同的 css 文件(一旦使用它们就没有闪烁)。

所以我使用yepnope.js来预加载 css 文件:

一切都按预期工作,只是在加载每个样式表时都在应用它。

无论如何预加载样式表而不实际应用它们?

编辑

我也试过:

在阅读了preload! Prefix他们的文档页面后,但这似乎不起作用。

编辑 2

还尝试添加:

但它似乎没有效果。

0 投票
2 回答
1742 浏览

jquery - 如何使用 AJAX 调用加载边缘动画?jquery getScript 失败

所以我试图通过 jQuerys $.getScript() 检索 Edge 动画,这与使用 dataType: 脚本调用 $.ajax 相同。

现在,如果我将脚本包含在脚本标记中,它可以正常工作,但是当我尝试通过 $.getScript() 加载和执行脚本时,什么也没有发生。(我没有收到任何错误,脚本和子脚本加载正常 - 但没有任何反应。)

有没有人尝试过这样做?我怀疑我在通过 AJAX 加载它时遇到问题,因为 Adob​​e 在 page_a_edgePreload.js 中使用了 yepnope。

我使用从 Adob​​e Edge 中找到的一个简单示例进行测试。如果您想在本地试用 - 打开编辑器并将以下内容保存到 wrapper.html 文件中:

然后在此处从 Adob​​e 下载示例 .zip 文件:http: //blogs.adobe.com/edge/files/2012/05/an15BootStrapExample.zip

将以下内容提取到与 wrapper.html 相同的文件夹中:

  1. edge_includes 文件夹
  2. page_a_edge.js
  3. page_a_edgeActions.js
  4. page_a_edgePreload.js

编辑

好的,所以我尝试按照 Alex 的建议在不通过 edgePreloader.js 的情况下加载文件。我可以访问 Adob​​eEdge,但如果我在成功加载脚本后写出合成,它会返回 undefined:

(我也用 setTimeout() 函数试过这个 - 结果还是一样)

<script src="..edgePreloader.js"></script>如果我将脚本包含在常规标记中,则以下工作正常

我注意到 Adob​​e 在 edgePreload.js 上使用了闭包,看来我必须在这个闭包中加载 edge.1.5.0.js。我现在试图了解在这个闭包中哪些事件和特性是必不可少的,以使其正常工作。

0 投票
3 回答
2963 浏览

javascript - 基于 JQuery 插件中的测试条件的 CSS 文件的条件加载

我正在寻找基于一组特定条件有条件地加载某些文件的最佳方法。

我有三个 CSS 文件和两个 javascript 文件,我目前正在加载如下:

很明显,第四个文件是 JQuery,第五个是我的 JQuery 插件。JQuery 插件内部有一系列类似于测试的函数,例如isMobileisRetinaisPhone等。但是,让我们关注isRetina.

我要完成的工作如下:

  1. 首先加载 JQuery 和我的 JQuery 插件
  2. 使用isRetina我的 JQuery 插件中的函数来检查设备是否有视网膜显示
  3. 加载core.min.css
  4. add_regular.min.css如果不是 Retina 显示则加载,如果add_retina.min.cssRetina 显示则加载

目前我正在加载所有三个 CSS 文件,我不想这样做,因为我有一堆其他 CSS 文件,我想加载它们,因为我的 JQuery 插件根据上面的示例确定哪个是最好的。例如,在使用插件的功能phone.min.css进行另一次测试后,我可能想要加载一个。isPhone

我正在考虑使用YepNope和做这样的事情:

但是,即使上述方法是正确的,我也不确定如何实现document.ready,因为我的插件的构造函数只需要在 DOM 准备好时运行。

我想了解如何使用YepNope或任何其他解决方案来解决这个问题。

干杯。