2009-04-08 7 views
0

Я пытаюсь открыть поисковую страницу почтового индекса на сайте USPS и заполнить форму с помощью JavaScript, и я получаю следующее сообщение об ошибке: 'Permission denied to get property Window.document'Javascript междоменный document.getElementById

Вот мой сценарий:

function lookupZipCode(line1, line2, city, state, zip) { 
    var usps = window.open('http://zip4.usps.com/zip4/welcome.jsp'); 
    usps.document.getElementById('address2').value = line1; 
    usps.document.getElementById('address1').value = line2; 
    usps.document.getElementById('city').value = city; 
    usps.document.getElementById('state').value = state; 
    usps.document.getElementById('zip5').value = zip); 
} 

Я понимаю, что это функция безопасности. В идеале я бы использовал параметры строки запроса, но страница, похоже, не поддерживает их.

У кого-нибудь есть идеи для обходного пути?

+0

Ах, вы только хотели заполнить форму, вы не пытаетесь получить фактический результат поиска. –

ответ

4

Если не нравится API (;-)), вы можете использовать строки запроса Params: http://zip4.usps.com/zip4/welcome.jsp?address1=somethingelse&address2=something&state=FL&city=Miami&zip5=123456789&urbanization=

+0

Обратите внимание, что это работает только в том случае, если у пользователя включен Javascript. У меня был NoScript, блокирующий usps.com, поэтому это оставило форму пустой для меня. –

+0

Как вы определили имена параметров строки запроса? –

+0

@Chad Birch: да, поля заполняются JavaScript. – Rafael

3

Вы должны использовать APIs they provide вместо того, чтобы пытаться автоматизировать заполнение формы.

+0

Возможно, это правильно. Но это то, чего просили пользователи и намного проще, чем использовать API. В настоящее время пользователи используют копию и вставку для заполнения формы usps. –

0

Было бы полезно знать об ошибке безопасности вы получили. Это результат «same origin policy» для веб-скриптов.

0

Я не работал с ним слишком много, но вы можете использовать селектор HTML на языке Yahoo Query (http://developer.yahoo.com/yql/), чтобы получить нужные вам детали. вы можете передать его вместе с JSON, с которым вы можете получить перекрестный домен.

Смежные вопросы