sscanf(buffer, any_format_without_width, &anytype);
недостаточно , недостаточно для обнаружения переполнения.
, если результат преобразования не может быть представлен в объекте, поведение не определено. C11dr §7.21.6.2 10
blockquote>Не используйте семейство
*scanf()
для обнаружения переполнения. Это может работать в некоторых случаях, но не в целом.
Вместо этого используйте функции
strto**()
. Тем не менее, даже ОПisInt()
неправильно закодированы, поскольку неправильно оцениваютisInt("\n")
,isInt("")
,isInt("999..various large values ...999")
как хорошиеint
с.Альтернатива:
bool isint_alt(const char *s) { char *endptr; errno = 0; long y = strtol(s, &endptr, 10); if (s == endptr) { return false; // No conversion } if (errno == ERANGE) { return false; // Outside long range } if (y < INT_MIN || y > INT_MAX) { return false; // Outside int range } // Ignore trailing white space while (isspace((unsigned char)*endptr)) { endptr++; } if (*endptr) { return false; // Trailing junk } return true; }
Во-первых, необходимо понять, что у Вас есть два документа: кадр и контейнер (который содержит кадр).
основное препятствие с управлением кадром от контейнера состоит в том, что кадр загружается асинхронно. Вы не можете просто получить доступ к нему никакое время, необходимо знать, когда это закончило загружаться. Таким образом, Вам нужен прием. Обычное решение состоит в том, чтобы использовать window.parent
в кадре для подъема (в документ, который содержит эти iframe
тег).
Теперь можно назвать любой метод в документе-контейнере. Этот метод может управлять кадром (например, называют некоторый JavaScript в кадр с параметрами, в которых Вы нуждаетесь). Для знания, когда назвать метод у Вас есть две опции:
Вызов это от body.onload кадра.
Помещенный элемент сценария как последняя вещь в содержимое HTML кадра, где Вы называете метод контейнера (оставленным как осуществление для читателя).
, Таким образом, кадр похож на это:
<script>
function init() { window.parent.setUpFrame(); return true; }
function yourMethod(arg) { ... }
</script>
<body onload="init();">...</body>
И контейнер как это:
<script>
function setUpFrame() {
var frame = window.frames['frame-id'];
frame.yourMethod('hello');
}
</script>
<body><iframe name="frame-id" src="..."></iframe></body>
Зависит от Вашей определенной ситуации, но если iframe может быть развернут после остальная часть загрузки страницы, можно просто использовать строку запроса, а-ля:
<iframe src="some_page.html?somedata=5&more=bacon"></iframe>
И затем где-нибудь в some_page.html:
<script>
var params = location.href.split('?')[1].split('&');
data = {};
for (x in params)
{
data[params[x].split('=')[0]] = params[x].split('=')[1];
}
</script>
Используйте набор кадров .
Из ссылки:
var frames = window.frames; // or // var frames = window.parent.frames;
for (var i = 0; i < frames.length; i++) {
// do something with each subframe as frames[i]
frames[i].document.body.style.background = "red";
}
, Если iframe имеет имя, можно также сделать следующее:
window.frames['ponies'].number_of_ponies = 7;
можно только сделать это, если две страницы подаются от того же домена.
Взгляните на ссылку ниже, которая предполагает, что возможно изменить содержание iFrame в Вашей странице с JavaScript, хотя Вы, скорее всего, столкнетесь с несколькими перекрестными проблемами браузера. Если можно сделать это, можно использовать JavaScript на странице для добавления скрытых dom элементов к iFrame, содержащему значения, которые может считать iFrame. Доступ к документу в iFrame
То, что необходимо сделать, должно добавить значения как параметры в iframe src (URL).
, Например, <iframe src="some_page.php?somedata=5&more=bacon"></iframe>
И затем в То, что необходимо сделать, должно добавить значения как параметры в iframe src (URL). , Например, [110] И затем в [111] файл Вы используете [112] для получения его от iframe URL. NB: Iframes, выполненный как отдельное окно браузера в Вашем файле. some_page.php
файл Вы используете php
для получения его от iframe URL. NB: Iframes, выполненный как отдельное окно браузера в Вашем файле.