Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.04.2011, 18:08
MVH MVH вне форума
Новичок на форуме
Отправить личное сообщение для MVH Посмотреть профиль Найти все сообщения от MVH
 
Регистрация: 30.12.2010
Сообщений: 5

Определение наличия и размера прокрутки у фрейма
Что бы использовать без jQuery надо $(frameElement).width() и $(frameElement).height() заменить на frameElement.clientWidth/Height и вычитать или не использовать padding'и для iframe'а в IE7.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="jquery.js" type="text/javascript"></script>
    <script type="text/javascript">
    /**
     * Detect frame scrollbar size.
     * Tested on iframe tag in browsers:
     * Firefox 3.6.16
     * Firefox 4
     * Opera 9.64
     * Opera 10.60
     * Opera 11.01
     * Chrome 10
     * IE 6,7,8,9
     * Firefox mac 3.6.13
     * Chrome mac 10
     * Safari mac 5.0.3
     * 
     * @param {HTMLIFrameElement} frameElement
     */
    function detectFrameScrollbarSize(frameElement)
    {
        // frameElement.clientWidth/Height:
        // - include scrollbar size for iframe
        // - include borders only in IE6
        // - include paddings in firefox/opera/chrome/IE6,7
        // - not include paddings in IE8,9

        // frameElement.contentWindow.innerWidth/Height:
        // - include scrollbar size
        // - not include paddings and borders
        // - undefined in IE6,7,8
        
        // jQuery $(frameElement).width()/height():
        // - include scrollbar size for iframe
        // - include borders only in IE6
        // - not include paddings

        var documentElement = frameElement.contentWindow.document.documentElement;
        // Instead of jQuery width()/height() you can use frameElement.clientWidth/Height (and subtract 
        // or not use iframe paddings for IE7):
        var clientWidth = frameElement.contentWindow.innerWidth || $(frameElement).width();
        var clientHeight = frameElement.contentWindow.innerHeight || $(frameElement).height();

        // In IE6 frameElement.clientWidth/Height and jQuery width()/height() include frame border (css border)
        if (document.all && !window.opera && !window.XMLHttpRequest) // IE6
        {
            // documentElement.offsetWidth/Height in IE6 is similar to frameElement.clientWidth in IE8,9
            clientWidth = documentElement.offsetWidth;
            clientHeight = documentElement.offsetHeight;
        }

        return {
            width: documentElement.clientWidth ? clientWidth - documentElement.clientWidth : 0,
            height: documentElement.clientHeight ? clientHeight - documentElement.clientHeight : 0
        };
    }
    </script>
    <script type="text/javascript">
        $(document).ready(function()
        {
            $('iframe').load(function(e)
            {
                var size = detectFrameScrollbarSize(e.currentTarget);
                alert([size.width, size.height]);
            });
        });
    </script>
</head>
<body>
    <iframe src="/" frameborder="0"></iframe>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 05.04.2011, 17:54
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Написал бы тогда уж на чистом JS.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием
  #3 (permalink)  
Старый 05.04.2011, 19:16
MVH MVH вне форума
Новичок на форуме
Отправить личное сообщение для MVH Посмотреть профиль Найти все сообщения от MVH
 
Регистрация: 30.12.2010
Сообщений: 5

Сообщение от B~Vladi Посмотреть сообщение
Написал бы тогда уж на чистом JS.
Дописали бы уж тогда вместо своего сообщения.
Ответить с цитированием
  #4 (permalink)  
Старый 05.04.2011, 21:15
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Аха, щас.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием
  #5 (permalink)  
Старый 06.04.2011, 11:36
MVH MVH вне форума
Новичок на форуме
Отправить личное сообщение для MVH Посмотреть профиль Найти все сообщения от MVH
 
Регистрация: 30.12.2010
Сообщений: 5

Сообщение от B~Vladi Посмотреть сообщение
Аха, щас.
Ханжа.
Ответить с цитированием
  #6 (permalink)  
Старый 06.04.2011, 12:05
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от MVH
Ханжа.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием
  #7 (permalink)  
Старый 06.04.2011, 12:49
MVH MVH вне форума
Новичок на форуме
Отправить личное сообщение для MVH Посмотреть профиль Найти все сообщения от MVH
 
Регистрация: 30.12.2010
Сообщений: 5

Сообщение от B~Vladi Посмотреть сообщение
Чему Вы удивляетесь? Я выложил безвозмездно скрипт, который написал с использованием той библиотеки, которую применяю в настоящий момент, описав, тем не менее, способ как переработать скрипт, если кому-то потребуется версия без jQuery. Но Вы, почему то, начали высказывать свои недовольства так, будто я Вам чем-то обязан, вместо того, что бы поступить в духе open source (приверженцем которого, судя по вашей подписи, Вы являетесь) и доработать скрипт самому.

Последний раз редактировалось MVH, 06.04.2011 в 13:12.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск