JS для определения разрешения браузера работает в Chrome & Safari, но не в IE9 или FF9 - PullRequest
1 голос
/ 28 января 2012

По какой-то причине этот базовый JS для определения разрешения браузера работает в Safari и Chrome, но не в IE9 или FF9. По сути, всякий раз, когда форма, которую это все готово к отправке, JS должен обновлять скрытые поля с учетом высоты и ширины браузера. Но опять же это не работает в IE9 или FF9.

Кнопка отправки -

<input type="image" src="lib/send_feedback.jpg" border="0" class="feedback-submit-img" onClick="javascript: validate(); return false;"/>

Код скрытой формы -

<input name="h" id="h" type="hidden" value="" /><input name="w" id="w" type="hidden" value="" />

Похожие jQuery -

// Submit form to next page
function submitForm() {
//   document.forms["feedbackform"].submit();
    document.feedbackform.submit();
}
// Submit form and validate email using RFC 2822 standard
function validateEmail(email) { 
    // Modified version original from: http://stackoverflow.com/a/46181/11236
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
}
// Return true if email field is left unchanged
function originalText(email){
    var defaultMsg;
    defaultMsg = "Enter your email address (optional)";
    if(defaultMsg == email){
        return true;    
    }
    return false;
}
// Verify or decline with error message
function validate(){
    $("#result").text("");
    var email = $("#email").val();
    if ((validateEmail(email)) || originalText(email)) {
        w.value = screen.width;
        h.value = screen.height;
        submitForm();
    } else {
        $("#result").text(email + " is not a valid email.");
        $("#result").css("color", "red");
    }
    return false;
}
$("form").bind("submit", validate);

Вот весь код и CSS

Ответы [ 2 ]

2 голосов
/ 28 января 2012
В

jquery есть способ получить высоту (используя метод .height()), который является кросс-браузерным.Ручной способ сделать кросс-браузер-совместимую высоту документа - это что-то следующее

function getDocHeight() {
    var D = document;
    return Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );
}

http://james.padolsey.com/javascript/get-document-height-cross-browser/

, и вот версия jquery (из комментария в той же ссылке)

$.getDocHeight = function(){
    return Math.max(
        $(document).height(),
        $(window).height(),
        /* For opera: */
        document.documentElement.clientHeight
    );
};
0 голосов
/ 28 января 2012

Когда вы говорите, что разрешение браузера означает физический размер монитора?Если это так, вы можете использовать:

var w = window.screen.width;
var h = window.screen.height;

Они такие же, как размер устройства.

См .: responsejs.com / labs / размеры /

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