Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何解决jquery和x2B之间的范围问题;flash插件和require.js_Javascript_Requirejs - Fatal编程技术网

Javascript 如何解决jquery和x2B之间的范围问题;flash插件和require.js

Javascript 如何解决jquery和x2B之间的范围问题;flash插件和require.js,javascript,requirejs,Javascript,Requirejs,我今天在GitHub上得到了一个建议,在它的主分支上进行了一点小改动,因为插件的Flash元素不能与闭包一起工作。归根结底,Flash需要一个全局变量,因此在通过require.js加载后,作用域会发生变化,并且变量不再可见 pull请求中建议的修复方法是省略声明,因此基本上: foo = { "bar": 1 }; 而不是: var foo = { "bar": 1 }; 但这禁止jslint永远通过,所以我真的不想这么做 我是否应该在我的主脚本中使用以下内容来修复此问题: var foo

我今天在GitHub上得到了一个建议,在它的主分支上进行了一点小改动,因为插件的Flash元素不能与闭包一起工作。归根结底,Flash需要一个全局变量,因此在通过require.js加载后,作用域会发生变化,并且变量不再可见

pull请求中建议的修复方法是省略声明,因此基本上:

foo = { "bar": 1 };
而不是:

var foo = { "bar": 1 };
但这禁止jslint永远通过,所以我真的不想这么做

我是否应该在我的主脚本中使用以下内容来修复此问题:

var foo = { "bar": 1 };
if ( typeof(window) === 'object' ) { window['foo'] = foo; }

或者我应该鼓励在实现中而不是在脚本中解决这个问题吗?

如果您需要Flash的全局变量,那么我建议为您的应用程序创建一个合适的命名空间,以便Flash可以通过单个入口点访问它

// create your objects for your app
var foo = {
    bar: 1
};

// add your object to the global namespace  eg. 'myApp'
window.myApp = foo;

这篇文章可能会有所帮助:

如果您需要Flash的全局变量,那么我建议为您的应用程序创建一个合适的命名空间,以便Flash可以通过单个入口点访问它

// create your objects for your app
var foo = {
    bar: 1
};

// add your object to the global namespace  eg. 'myApp'
window.myApp = foo;

本文可能会有所帮助:

第三方是否需要直接控制变量?您可以在末尾添加行
window.foo=foo


但是,更安全的做法是使用返回值的
getFoo()
方法,这样您就可以控制变量。

第三方是否需要直接控制变量?您可以在末尾添加行
window.foo=foo


但是,更安全的做法是使用一个返回值的
getFoo()
方法,这样您就可以控制变量。

您可以提供一个初始化参数,允许库的使用者选择将其粘贴到何处

require(['theflashlibrary'], function(theFlashLibrary){

    theFlashLibrary.init({ globalProperty: 'foo' }); //Otherwise this could default to something else...
});

我没有一个很好的方法可以做到这一点,但是,我觉得至少可以为用户提供一种方法来选择您的库将被引用到哪里。

您可以提供一个初始化参数,允许您的库的使用者选择将其粘贴到哪里

require(['theflashlibrary'], function(theFlashLibrary){

    theFlashLibrary.init({ globalProperty: 'foo' }); //Otherwise this could default to something else...
});

我没有一个很好的方法来实现这一点,但是,我觉得至少可以为用户提供一种方法来选择引用库的位置。

虽然这很理想,但问题是编译的flash对象需要全局范围内的预定义访问点,而且由于它被编译成swf,我需要设置它。虽然这很理想,但问题是编译后的flash对象需要全局范围内的预定义访问点,而且因为它被编译成swf,所以我需要设置它。整个脚本已经有了名称空间,所以我想只要人们不想运行我的脚本的多个版本,就可以了。谢谢你的回答。整个脚本已经有了名称空间,所以我想只要人们不打算运行我脚本的多个版本,就可以了。谢谢你的回答。这是一个非常正确的观点,除非其他人有更好的想法,否则我会同意。谢谢。这是一个非常正确的观点,除非其他人有更好的想法,否则我会同意。非常感谢。