2012-05-22 4 views
0

я следующий код:Встроенные переменные JavaScript, используемые внешним файлом JavaScript? (Variable вопрос Scope)

<script type="text/javascript"> 
    var ops = { 
     slideshow: { 
      slices: 20, 
      boxCols: 11, 
      boxRows: 6, 
      animSpeed: 750, 
      pauseTime: 6000 
     }, 
     tweets: { 
      username: 'stigmahost', 
      count: 6, 
      refresh_interval: 120, 
      auto_join_text_default: 'I said,', 
      auto_join_text_ed: "I", 
      auto_join_text_ing: "I am", 
      auto_join_text_reply: "I replied to", 
      auto_join_text_url: "I was looking at", 
      just_now: 'Now', 
      X_seconds_ago: '{x} seconds ago', 
      about_a_minute_ago: 'About a minute ago', 
      about_X_minutes_ago: 'About {x} minutes ago', 
      about_an_hour_ago: 'About an hour ago', 
      about_X_hours_ago: 'About {x} hours ago', 
      about_a_day_ago: 'About a day ago', 
      about_X_days_ago: 'About {x} ημέρες ago' 
     }, 
     map: 
     { 
      latitude: 37.966667, 
      longitude: 23.716667, 
      zoom: 8 
     } 
    } 
</script> 

и сразу после этого кода у меня есть этот код:

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=MyKey&sensor=true"> </script> 
<script type="text/javascript" src="js/js.js"></script> 
<script type="text/javascript" src="js/jquery.tweet.js"></script> 

Тогда внутри js.js файла I попробуйте использовать переменную ops, но без всякой удачи. У вас есть идея, почему я не могу использовать переменную ops в js.js.

В JS файл я должен использовать этот код для того, чтобы определить тип переменной Ops:

console.dir(ops); 

и в моей консоли я получаю неопределенную результат.

Я сделал что-то не так?


Я сделал некоторый прогресс. Js.js файл так:

jQuery(document).ready(
    function() 
    { 
     console.dir(typeof ops); 
     ... 
     File code here 
     ... 
    } 
); 

выше код возврата в моей консоли «неопределенный»

Теперь я стараюсь, что:

console.dir(typeof ops); 

jQuery(document).ready(
    function() 
    { 
     console.dir(typeof ops); 
     ... 
     File code here 
     ... 
    } 
); 

и вернуться в моей консоли " Object "для первой попытки и" undefined "для второго типа.

Может это помочь?

+1

я судимый код (без googleapis) и, кажется, работает хорошо, вы можете показать нам, как вы пытаетесь опс доступа? Я использую хром. –

ответ

2
$.getScript("js.js", function() { 
    //declare ops-variable in here and use it 
}); 

Без JQuery:

var Loader = function() { 

} 
Loader.prototype = { 
require: function (scripts, callback) { 
    this.loadCount  = 0; 
    this.totalRequired = scripts.length; 
    this.callback  = callback; 

    for (var i = 0; i < scripts.length; i++) { 
     this.writeScript(scripts[i]); 
    } 
}, 
loaded: function (evt) { 
    this.loadCount++; 

    if (this.loadCount == this.totalRequired && typeof this.callback == 'function') this.callback.call(); 
}, 
writeScript: function (src) { 
    var self = this; 
    var s = document.createElement('script'); 
    s.type = "text/javascript"; 
    s.async = true; 
    s.src = src; 
    s.addEventListener('load', function (e) { self.loaded(e); }, false); 
    var head = document.getElementsByTagName('head')[0]; 
    head.appendChild(s); 
} 
} 

var l = new Loader(); 
l.require([ 
"js.js" 
function() { 
    // do same stuff in this callback 
}); 
+0

Я не могу использовать это, потому что библиотека jQuery включает его в файл js.js для оптимизации скорости. Ваш ответ поднят от меня из-за информации;) Спасибо ... –

+1

@MerianosNikos Я добавил асинхронное решение без jquery. Может быть, это может помочь – Johan

+0

Это вызывает много ошибок :(В любом случае, спасибо вам большое :) –

Смежные вопросы