2016-08-17 8 views
0

Я хотел подключить IIFE функции:Hook IIFE (самообеспечение вызова) JavaScript функции

(function(p) { 
    // stuff 
})(); 

Я задаю этот вопрос в общем смысле, хотя конкретная причина заключается в том, что WordPress плагины часто бросают встроенные скрипты прямо в корпус мощность. Если вы хотите отложить (асинхронные) зависимости от нагрузки по причинам SEO, это, естественно, не удастся.

Чтобы исправить бесконечные плохие правила кодирования поставщиками плагинов и плагинами, которые просто не разработаны с учетом асинхронной загрузки, я хочу сделать такую ​​вещь.

Я пытаюсь избежать:

  1. Изменение кода поставщика напрямую.
  2. Анализ содержимого с использованием PHP.
  3. Блокирование существующих серверных систем загрузки ресурсов JavaScript, чтобы соответственно загрузить их позже.

Мне интересно, есть ли в браузере какой-то чрезвычайно низкий уровень прототипа, который можно использовать для перехвата функций такого характера?

+3

FYI, это называется [IIFE] (http://benalman.com/news/2010/11/immediately-invoked-function-expression/) (сразу же вызванное функциональное выражение) –

+0

спасибо! Обновленные теги и заголовок – Barry

+1

К сожалению, ответ прост: «нет», для этого нет крючков низкого уровня в браузере. Что бы вы сделали, если бы имели такую ​​способность? Было бы более продуктивно, если бы вы точно указали, что вы пытаетесь сделать, и может быть лучший подход к проблеме. – Jacob

ответ

0

Итак, я закончил тем, что хотел избежать. Он немного грязный, но он работает очень хорошо. Я бы поделился, но NDA. Если возможно, я постараюсь представить его как запрос на растяжение на одном из более крупных плагинов для SEO/кэширования (вероятно, Better Wordpress minify).

Он сканирует выходной буфер для проблемных скриптов и стилей и корректирует их как совместимый с Google SEO (неблокирующий). Я полагаю, что это никогда не сработает для gen-pop, поскольку количество плохого кодирования в этом мире бесконечно, и я думаю, что регулярное выражение станет болезненно раздутым к тому времени, когда будут обработаны все варианты использования.

Он опирается на loadCSS и некоторую форму native DocumentContentLoaded для определения встроенного в голове, начинает с принудительного отсрочки всех исходных сценариев, очищает javascript, предназначенный для выполнения в его собственном теге скрипта, и перемещает сценарии тела в одну функцию, которая может быть вызвана, когда время правильное. Все с регулярным выражением.

Вот некоторые указатели для тех, кто заинтересован в этом похоже:

крикнуть все комментарии и помощь, предоставляемые здесь, не было бы даже пытался, не говоря для вас, ребята, сначала. Цените указатели и советы, до встречи в следующий раз!