JavaScript, когда новый тег напечатан выполнить и синтаксис загадочной функции - PullRequest
0 голосов
/ 09 октября 2011

У меня есть код Js Src, содержащий функции API Jsonp. Где бы ни был напечатан этот код Js Src, я сначала должен проверить, напечатан ли уже «api tag», если он это сделал -> выполнить функцию api, если «api tag» еще не распечатан, подождите, пока получится тег распечатывается на экране и затем выполняет функции API.

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

<html>
  <head>
    <!-- js code - contain Jsonp functions -->
    <script type="text/javascript" src="jsonp.js"></script>
  </head>

  <body>
    <!-- when this newtag get print , the function starts -->
    <newtag:api size="small">myNewTag</newtag:api>
  </body>

Я не знаю, где пользователь решит поместить код JS, он может быть в голове, теле или в середине страницы, так как у меня есть эта загадка, я не могу сделать что-то вроде этого:

<newtag:api size="small">myNewTag</newtag:api>
<script> startJsonp(); </script>

потому что, если код js еще не распечатан, заказ не будет выполнен.

и если Js-код распечатан в голове, он не будет работать, так как «api-тег» еще не распечатан.

, чтобы заставить API работать, мне нужно, чтобы на экране уже была напечатана "метка api" для работы функций Jsonp.

что я могу сделать, чтобы решить эту проблему?


что такое морская свинка, чтобы написать JS-функцию подобным образом?

(function(){
  // do something
})();

Большое спасибо!

1 Ответ

0 голосов
/ 09 октября 2011

Существует несколько решений этой проблемы:

  • Использование функции jQuery ready . Например:

    jQuery.ready (function () {startJsonp ();})

  • Использование window.onload . Проблема в том, что вы можете непреднамеренно переопределить другую функцию window.onready. Например:

    window.onready = startJsonp ();

  • Использование document.addEventListener и document.attachEvent . Eg.:

    if (document.addEventListener) { document.addEventListener ('load', startJsonp, false); } else if (el.attachEvent) { document.attachEvent ('onload', startJsonp); }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...