2013-08-14 4 views
0

У меня есть два html-файла Parent.html & Child.html. Parent.html импортирует файл jquery.js и Child.html в iframe.iframe как использовать родительский файл javascript в iframe

Parent.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<script type="text/javascript" src="js/jquery.js"></script> 
<script> 
$('body').click(function() { 
alert("asdgaskdj"); 
}); 
</script> 
</head> 
<body> 
<!--Parent do some thing--> 
<iframe id="workspace" style="width:100%;height:100%;overflow:auto;" src="Child.html"> 
</iframe> 
</body> 
</html> 

child.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<script> 
$('body').click(function() { 
alert("asdgaskdj"); 
}); 
</script> 
</head> 
<body> 
<!--child do some thing--> 
</body> 
</html> 

Мой qustion уже JQuery был импортирован Parent.html Должен ли я импортировать его снова в child.html

если я не импортирую в Child.html, он показывает, что $ undefined.

Parent.html уже импортирован 255KB файла js. Child.html также хочу сделать то же самое. Если это так, то снова 255kb файла необходимо загрузить с сервера. Есть ли другой способ достичь решения.

PLZ HELP !!!!!

ответ

1

Вы должны включить его дважды, но сервер будет кэшировать его. Таким образом, клиент загружает 255 Кбайт в первый раз и помнит, что он уже загрузил документ, поэтому он не будет загружать его во второй раз.

Также см. w3c specification и этот tutorial. Вы должны добавить следующие строки (например), чтобы ваш .htaccess, чтобы включить кэширование (она включена по умолчанию, в большинстве веба-хостеров):

# Cache all your static assets for 1 month 
<filesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> 
Header set Cache-Control "max-age=2592000, public" 
</filesMatch> 

Кроме того, вы можете включить Gzip-сжатие, что позволит свести к минимуму трафика даже больше. Это описано в this tutorial.

0

Плохая новость: вам нужно, чтобы библиотека jQuery загружалась в каждый кадр, который ее требует.

Хорошие новости: Браузеру известно, что он уже запросил его, и поэтому просто используйте свою кешированную копию вместо загрузки ее заново.

Есть дальнейшие улучшения, которые вы можете сделать, тоже:

  • Если вы убедитесь, что вы используете Минимизированный версию JQuery, это принесет ваш размер загрузки вниз значительно - 1.10.2 идет от 97Kb до 38Kb ,
  • Если вы включите сжатие gzip, файл будет сжат во время загрузки, что позволит сэкономить дополнительную пропускную способность.
  • Если вы используете CDN (например, Google), вы можете воспользоваться тем, у пользователя уже есть кешированная копия jQuery, на которую ссылается другой сайт. В результате им совсем не нужно было загружать его - он уже был там.
0

Вы не хотите включать плагин jQuery снова в child.html.

Просто вставьте window.parent до $ для доступа к родительскому плагину jQuery.

Ребенка.html

<script> 
    window.parent.$('body').click(function(){ 
     alert("asdgaskdj"); 
    }); 
</script> 
Смежные вопросы