Я ищу решение, которое позволит мне объединить два сценария и обеспечить их совместную работу в кросс-браузерной манере и в соответствии со стандартами XHTML 1.0 Transitional.
Первый скрипт открывает файл/местоположение на основе выбора в раскрывающемся списке.
Вот сценарий:
<script type="text/javascript">
//<![CDATA[
<!--
function go(){
if (document.fooform.fooselect.options[document.fooform.fooselect.selectedIndex].value != "none") {
location = document.fooform.fooselect.options[document.fooform.fooselect.selectedIndex].value
}
}
//-->
//]]>
</script>
Вот разметка:
<form name="fooform">
<select name="fooselect">
<option selected="selected" value="#">Select a file</option>
<option value="pdfs/somefile1.pdf">file 1</option>
<option value="pdfs/somefile2.pdf">file 2</option>
<option value="pdfs/somefile3.pdf">file 3</option>
<option value="pdfs/somefile4.pdf">file 4</option>
</select>
<input onclick="go()" type="button" value="Get PDF" />
</form>
довольно прямолинейно...
Второй скрипт, конечно же, как указано в заголовке, открывает всплывающее окно по центру.
Вот сценарий:
<script type="text/javascript">
//<![CDATA[
<!--
function PopupCenter(pageURL, title,w,h) {
var left = (screen.width/2)-(w/2);
var top = (screen.height/2)-(h/2);
var targetWin = window.open (pageURL, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);
}
//-->
//]]>
</script>
Вот разметка:
<input onclick="PopupCenter('http://www.stackoverflow.com', 'popfoo',400,400);" type="button" value="Open Center Popup" />
Итак, моя задача состоит в том, чтобы создать сценарий, который, когда пользователь нажимает кнопку «Получить PDF», открывает всплывающее окно по центру, содержащее файл PDF, и этот файл PDF будет меняться в зависимости от варианта, который он выбрал в раскрывающемся списке.
У меня будет несколько раскрывающихся списков на странице, поэтому, скорее всего, сценарии изменятся с document.fooform.fooselect.options
на document.form1.select1.options
, document.form2.select2.options
и т. д., а функции будут такими, как go1()
, go2()
и т. д.
Любая помощь/советы/предложения приветствуются!
ОБНОВЛЕНИЕ Четверг, 22 ноября 2012 г.
Я думал о том, чтобы пожертвовать функцией всплывающего окна по центру вместо того, чтобы просто заставить этот скрипт открывать PDF-файл в новом окне, до сих пор я пытался:
<input type="button" value="Get PDF" onclick="window.open(go().href); return false;" />
так же как
<input type="button" value="Get PDF" onclick="window.open(go(), 'USER GUIDE', 'width=500,height=300');" />
но оба этих входа просто открывают PDF в одном окне, и я пытаюсь избежать этого.
И если я просто попытаюсь объединить два вышеуказанных скрипта следующим образом:
<script type="text/javascript">
//<![CDATA[
<!--
function PopupCenter(pageURL, title, w, h) {
var left = (screen.width / 2) - (w / 2);
var top = (screen.height / 2) - (h / 2);
var targetWin = window.open(pageURL, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);
}
var go = function go() {
if (document.fooform.fooselect.options[document.fooform.fooselect.selectedIndex].value != "none") {
location = document.fooform.fooselect.options[document.fooform.fooselect.selectedIndex].value
}
}
//-->
//]]>
</script>
а затем используйте следующий входной триггер:
<input onclick="PopupCenter('go()', 'popfoo',400,400);" type="button" value="Get PDF" />
or
<input onclick="PopupCenter('go', 'popfoo',400,400);" type="button" value="Get PDF" />
Я получаю сообщение об ошибке:
Интернет-обозреватель Windows
Не удается найти 'file:///W:/test/go()'. Убедитесь, что указан правильный путь или интернет-адрес.
[ОК]
or
Интернет-обозреватель Windows
Не удается найти 'file:///W:/test/go'. Убедитесь, что указан правильный путь или интернет-адрес.
[ОК]
и если я попробую без одинарных кавычек на входе, вот так
<input onclick="PopupCenter(go(), 'popfoo',400,400);" type="button" value="Get PDF" />
Я получаю сообщение об ошибке:
Интернет-обозреватель Windows
Не удается найти 'file:///W:/test/undefined'. Убедитесь, что указан правильный путь или интернет-адрес.
[ОК]
а затем PDF-файл открывается в том же окне после того, как я нажимаю ОК в сообщении об ошибке.
Пожалуйста помоги!! Спасибо заранее :)
ОБНОВЛЕНИЕ 2, четверг, 22 ноября 2012 г.
Он работает в IE (только, к сожалению) в этой скрипте
В основном изменили затем location = document.fooform.fooselect.options[document.fooform.fooselect.selectedIndex].value
и объявили location
как переменную (что я считаю плохой идеей, поскольку location
является глобальной переменной - если бы кто-то мог пролить свет на это, было бы здорово), а затем добавил строку window.open(location)
Хотелось бы сделать его кросс-браузерным и, надеюсь, получить некоторую помощь в настройке вызова нового окна (все же хотелось бы центрировать его и желательно удалить некоторые ненужные вещи из нового окна, такие как панель инструментов, панель состояния и т. д. и т. д.)
Заранее спасибо!
<script type="text/javascript">window.moveTo(0, 0);</script>
, но я не уверен, как изменить размер или центрировать окно при загрузке. Кроме того, в идеале я хотел бы удалить некоторые ненужные элементы во всплывающем окне (панель инструментов, строка состояния и т. д.). Возможно ли это сделать после загрузки этого окна? Спасибо за чаевые :) - person cassidymack   schedule 24.11.2012