相关疑难解决方法(0)

如何将依赖于jQuery的Javascript小部件嵌入到未知环境中

我正在开发一个依赖于jQuery的javascript小部件.小部件可能会也可能不会加载到已加载jQuery的页面上.在这种情况下出现了许多问题......

  1. 如果网页没有jQuery,我必须加载自己的jQuery.然而,这样做时似乎有一个微妙的时间问题.例如,如果我的窗口小部件在jQuery完成加载和执行之前加载并执行,我会收到jQuery is not defined错误.

  2. 如果网页确实有jQuery,我通常可以使用它.但是,如果jQuery版本是旧版本,我想加载自己的版本.但是,如果我自己加载,我需要以不踩它们的$变量的方式来做.如果我设置jQuery.noConflict()并且他们的任何脚本依赖$,那么我刚刚打破了他们的页面.

  3. 如果网页使用另一个javascript库(例如原型),我也需要对原型的$变量敏感.

由于以上所有,似乎更容易不依赖于jQuery.但是在我走这条路之前,我想先重写我的小部件代码.

我的代码的基本框架,包括时序错误和有时$错误,如下:

<script type="text/javascript" charset="utf-8">
// <![CDATA
 if (typeof jQuery === 'undefined') {
  var head = document.getElementsByTagName('head')[0];
  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = '{{ URL }}/jquery.js';
  head.appendChild(script);
 }
// ]]>
</script>
<script type="text/javascript" src="{{ URL }}/widget.js"></script>
Run Code Online (Sandbox Code Playgroud)

我的小部件具有以下结构:

(function($) {
 var mywidget = {
  init: function() {
   ...
  }
 };
 $(document).ready(function() {
   mywidget.init();
 });
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

如果有任何指针或资源来实现可以在所有提到的环境中工作的小部件,那么他们将非常感激.

javascript jquery widget

61
推荐指数
2
解决办法
2万
查看次数

异步脚本加载回调

http://jsfiddle.net/JamesKyle/HQDu6/

我创建了一个基于Mathias Bynens优化的Google Analytics异步脚本的简短函数,如下所示:

function async(src) {
  var d = document, t = 'script',
      o = d.createElement(t),
      s = d.getElementsByTagName(t)[0];
  o.src = '//' + src;
  s.parentNode.insertBefore(o, s);
}
Run Code Online (Sandbox Code Playgroud)

这很好用,我已经开始将它用于几个不同的脚本

// Crazy Egg
async('dnn506yrbagrg.cloudfront.net/pages/scripts/XXXXX/XXXXX.js?' + Math.floor(new Date().getTime() / 3600000));

// User Voice
var uvOptions = {};
async('widget.uservoice.com/XXXXX.js');

// Google Analytics
var _gaq = [['_setAccount', 'UA-XXXXX-XX'], ['_setDomainName', 'coachup.com'], ['_trackPageview']];
async('google-analytics.com/ga.js');

// Stripe
async('js.stripe.com/v1');?
Run Code Online (Sandbox Code Playgroud)

当我遇到需要在加载后调用的脚本时出现问题:

// Snap Engage
async('snapabug.appspot.com/snapabug.js');
SnapABug.init('XXXXX-XXXXX-XXXXX-XXXXX-XXXXX');
Run Code Online (Sandbox Code Playgroud)

所以我想我会把它变成一个回调函数,可以这样使用:

async('snapabug.appspot.com/snapabug.js', function() {
    SnapABug.init('XXXXX-XXXXX-XXXXX-XXXXX-XXXXX');
});
Run Code Online (Sandbox Code Playgroud)

我没想到这对我来说很难做到,但结果却是这样.

我的问题是什么是添加回调的最有效方法,而不会使代码过于复杂.

请参阅jsfiddle:http: …

javascript asynchronous function callback

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

将变量直接从 &lt;script&gt; HTML 标签传递给 Javascript

是否可以直接从 HTML 标签传递变量<script>

<script async src="https://example.com/lib.js" site="test.com"></script>
Run Code Online (Sandbox Code Playgroud)

这样lib.js可以site像常规变量一样访问?

html javascript

18
推荐指数
2
解决办法
626
查看次数

通过SRC属性将变量传递给JavaScript

在我的HTML文件中,我已经链接到JS:

src="myscript.js?config=true"
Run Code Online (Sandbox Code Playgroud)

我的JS能直接读取这个var的值吗?

alert (config);
Run Code Online (Sandbox Code Playgroud)

这不起作用,FireFox错误控制台说"配置未定义".如何读取JS文件中通过src属性传递的变量?这很简单吗?

html javascript variables url src

14
推荐指数
2
解决办法
1万
查看次数

如何从<script>中确定参数?

可能重复:
如何从脚本路径获取查询字符串值?

我有:

index.html的:

...
<script src="myscript.js?param1=1&param2=2">
...
Run Code Online (Sandbox Code Playgroud)

myscript.js:

function getScriptParam(paramName){
  // How to determine the script parameters value?
  var value = HOW TO DO?;

  return value;
}

var param1 = getScriptParam('param1');  // param1 should be '1'
Run Code Online (Sandbox Code Playgroud)

谢谢.

javascript

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

允许用户将我的内容嵌入他们的网站(如博客) - rails 4

我正在构建一个Rails 4应用程序,我想要做的是为我的用户提供通过嵌入代码将我的内容嵌入他们自己的网站(如他们的博客)的选项.

换句话说,我想要一个包含一些内容的erb页面,以及一个显示"Embed"的按钮.当用户点击它时,会出现一小部分可嵌入代码,他们可以将这些代码复制并粘贴到他们的博客上等.这将显示我页面中的内容.

解决这个问题的最佳方式是什么?请尽可能具有描述性,因为我对此不熟悉.谢谢!

javascript embed iframe ruby-on-rails embedding

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