2013-12-04 5 views
0

Я делаю сайт, который имеет две колонки div. в правом столбце у меня есть несколько кнопок, которые, когда я нажимаю, я бы хотел, чтобы они открылись за кнопками в правом столбце, чтобы вы все еще могли видеть кнопки. В идеале я бы хотел сделать это без использования iframes. Я попытался использовать Ajax, но не уверен, почему он не работает. Вот код:Открытие страницы в фоновом режиме div

CSS:

html, 
body { 
height: 100%; 
margin: 0px auto; 
} 

#main, 
#col_l, 
#col_r 
{ 
height: 100%; 
} 

div[id*="col"] 
{ 
float: left; 
width: 50%; 
overflow: auto; 
} 

#col_r{ 
overflow:hidden; 
} 

Javascript:

function loadXMLDoc() { 
    var xmlhttp; 
    if (window.XMLHttpRequest) { 
     // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } else { 
     // code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=function() { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
      document.getElementById("col_r").innerHTML=xmlhttp.responseText; 
    } 
} 
xmlhttp.open("POST","video.html",true); 
xmlhttp.send(); 
} 

HTML Ссылка:

<div id=col_r> 
<a href="javascript: loadXMLDoc();">test</a> 
</div> 

Позвольте мне знать ваши мысли. Большое спасибо!

+3

Почему бы вам не использовать iframe? – RononDex

+0

Привет, RononDex, я пытаюсь создать сайт, где ссылки в правом столбце выполняют «ScrollTo» для содержимого в левом столбце с помощью идентификатора каждого раздела слева. Я не смог понять, как реализовать это с помощью фреймов, чтобы один обменивался информацией с другим. из того, что я понимаю, что делать это в divs легче, если у вас нет никаких мыслей? – Houmy

+1

Взгляните на следующий плагин jquery, который позволяет отправлять данные из и в iframes: http://benalman.com/projects/jquery-postmessage-plugin/ – RononDex

ответ

0

Там могут быть две возможные проблемы:

  1. Вам нужно запустить HTML с локального сервера HTTP (что-то вроде localhost:3000/index.html); Ваш код будет работать неправильно, если вы откроете его непосредственно из файловой системы, например file:///D:/index.html в строке url. Он вернет следующую ошибку в консоли:

    XMLHttpRequest не может загрузить файл: /// D: /video.html. Запросы на кросс-начало поддерживаются только для HTTP.

  2. Попробуйте использовать xmlhttp.open("GET","video.html",true); вместо метода POST, если вы просто читаете статические html-файлы.

+0

Привет, Ruocaled, большое спасибо за ваш ответ. Проблема заключалась в том, что он не запускался на локальном сервере! Теперь видео открывается, но не в правом div («col_r»). Также текст и ссылки на правом div, кажется, исчезают после открытия видео. Любые идеи почему? Поблагодарили бы за ваши мысли – Houmy

+0

@Houmy ваш код '.innerHTML =' заменяет содержимое 'col_r' div тем, что внутри' video.html'. Не знаю, почему это не отображается в правом div, отлично работает для меня. Можно было бы задать новый вопрос с более подробной информацией. –

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