iframe проблем

2 отговора 119 прегледа
#1

iframe проблем

Привет колеги.Изправям се пред един проблем, който не мога да си позволя да не представя и на вас и съответно заедно с това да ви попитам и за мнение.Накратко- имам една страничка, отляво меню, отдясно в iframe си е контента.Идеята- направено е така, заради елементите в менюто- един от тях съдържа под секции, които трябва да бъдат отворени при кликване върху линка, но не отдолу под него- пример менютата на дирбг- а да се появят в "балонче".Сами се досещате, че не могат да се ползват само фреймове- ляв и десен, защото балончето изчезва изпод десния фрейм.
Какъв е проблема?-при зареждане.. поне на мен ми се струва неестествено iframe се изнася надясно, а при кликване на елемента от менюто- този с "балончето" си се позиционира на правилното място.
Незнам какво бихте казали вие, но аз дали от много взиране вече или де да знам, не мога да видя причината за това изместване.
Предварително благодаря на тези, които ще вземат отношение.

source:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta name="Microsoft Border" content="none">
<title>test</title>
<script language="JavaScript1.2">
var menu1=new Array()
menu1[0]='<a href=test.htm target="_name">link</a>
'
menu1[1]='<a href=test.htm>link</a>
'
menu1[2]='<a href=test.htm>link</a>
'
menu1[3]='<a href=test.htm>link</a>
'
</script>
<style>
<!--
.wrap1{
position:absolute;
}
.wrap2{
position:absolute;
}
#dropmenu0{
z-index:100;
}
-->
</style>
</head>

<body bgColor="#FFFFFF" topmargin="0" leftmargin="0">

<table border="0" width="770" cellspacing="0" cellpadding="0">
<tr>
<td width="130" background="botimage1.jpg">link

link

link

link

link

link

<a href="http://" target="_blank">link</a>



<script language="JavaScript1.2">
//reusable/////////////////////////////


var zindex=100
var ns4=document.layers
var ns6=document.getElementById&&!document.all
var ie4=document.all
var opr=navigator.userAgent.indexOf("Opera")

function dropit(e,whichone){
curmenuID=ns6? document.getElementById(whichone).id : eval(whichone).id
if (window.themenu&&themenu.id!=curmenuID)
themenuStyle.visibility=ns4?"hide" : "hidden"

themenu=ns6? document.getElementById(whichone): eval(whichone)
themenuStyle=(ns6||ie4)? themenu.style : themenu

themenuoffsetX=(ie4&&opr==-1)? document.body.scrollLeft : 0
themenuoffsetY=(ie4&&opr==-1)? document.body.scrollTop : 0

themenuStyle.left=ns6||ns4? e.pageX-e.layerX : themenuoffsetX+event.clientX-event.offsetX
themenuStyle.top=ns6||ns4? e.pageY-e.layerY+19 : themenuoffsetY+event.clientY-event.offsetY+18

hiddenconst=(ns6||ie4)? "hidden" : "hide"
if (themenuStyle.visibility==hiddenconst){
themenuStyle.visibility=(ns6||ie4)? "visible" : "show"
themenuStyle.zIndex=zindex++
}
else
hidemenu()
return false
}

function hidemenu(){
if ((ie4||ns6)&&window.themenu)
themenuStyle.visibility="hidden"
else if (ns4)
themenu.visibility="hide"
}

if (ie4||ns6)
document.onclick=hidemenu

//reusable/////////////////////////////
</script> <!----------Menu 1 starts here----------> <ilayer> <layer visibility="show"> <p>link</p>

<p><span class="wrap2"
onClick="dropit(event, 'dropmenu0');event.cancelBubble=true;return false"><font
face="Verdana"><b><small><a href="link.htm"
onClick="if(ns4) return dropit(event, 'document.dropmenu0')">link</a></small></b></font>
</span></layer></ilayer></p>
<p>&nbsp;</p>

<p><!----------Menu 1 ends here----------></p>
<div id="dropmenu0"
style="position:absolute;left:0;top:0;layer-background-color:lightyellow;background-color:lightyellow;width:80;visibility:hidden;border:1px solid black;padding:0px"><script
language="JavaScript1.2">
if (document.all)
dropmenu0.style.padding="4px"
for (i=0;i<menu1.length;i++)
document.write(menu1)
</script>
</div><table border="0" width="770" cellspacing="0"
cellpadding="0">
</table>
</td>
<td width="640"><p align="right"><!--webbot bot="HTMLMarkup" startspan --><IFRAME
language=JAVASCRIPT dataFld=colname class=classname lang=language id=value
title=text dataSrc=#ID name=_name align=absBottom marginWidth=pixels
hspace=pixels frameSpacing=340 vspace=340px marginHeight=pixels
src="new_page_5.htm" frameBorder=NO noResize
width=640 scrolling=auto height=350 RESIZE | _top _self _parent _blank VBS VBSCRIPT
JSCRIPT 1 0
YES><!--webbot
bot="HTMLMarkup" endspan --></td>
</tr>
</table>
</body>
</html>



/сега виждам, че формата не визуализира BR
; тага за нов ред а направо си го дава, но ако си го пастнете в един текстов редактор и го саве като html си се вижда принципа

Редактирано от webname на

Отговор
в отговор на webname #2

Ами...

замени си декларацията на IFRAME с ето това:

<IFRAME style="left: 150px; position: absolute;" language=JAVASCRIPT dataFld=colname class=classname lang=language id=value
title=text dataSrc=#ID name=_name align=absBottom marginWidth=pixels hspace=pixels frameSpacing=340 vspace=340px marginHeight=pixels
src="new_page_5.htm" frameBorder=NO noResize width=640 scrolling=auto height=350 RESIZE | _top _self _parent _blank VBS VBSCRIPT JSCRIPT 1 0 YES>

Само дето не разбирам за какво са ти другите лайна вътре. Не че е от значение. Та така - използвай CSS, зарежи тоя шибан Web Bot и не си мисли че IFRAME се влияе от нещо друго освен от себе си. Видех че си опитал да го сложиш в таблица и да й дадеш align... По този въпрос - ще повторя:

IFRAME object (Object/HTML)

An object that represents an <IFRAME> tag.

Availability:
DOM level - 1
JavaScript - 1.2
JScript - 3.0
Internet Explorer - 4.0
Netscape - 6.0

Inherits from:
Element object

JavaScript syntax:
IE - myIFRAME = myDocument.all.anElementID
IE - myIFRAME = myDocument.all.tags("IFRAME")[anIndex]
IE - myIFRAME = myDocument.all[aName]
- myIFRAME = myDocument.aName
- myIFRAME = myDocument.getElementById(anElementID)
- myIFRAME = myDocument.getElementsByName(aName)[anIndex]
- myIFRAME = myDocument.getElementsByTagName("IFRAME")[anIndex]

HTML syntax:
<IFRAME> ... </IFRAME>

Argument list:
anIndex - A reference to an element in a collection
aName - An associative array reference
anElementID - The ID value of an Element object

Object properties:
align, dataFld, dataSrc, frameBorder, frameSpacing, height, hspace, longDesc, marginHeight, marginWidth, name, noResize, scrolling, src, tabIndex, vspace, width

Event handlers:
onClick, onDblClick, onHelp, onKeyDown, onKeyPress, onKeyUp, onMouseDown, onMouseMove, onMouseOut, onMouseOver, onMouseUp

An <IFRAME> is a special MSIE supported tag that introduces an inline frame into a document that appears like a block structured element within the document text flow, accessible as a named frame object that belongs to the document.
Its properties appear to be all read-only in the MSIE browser. Changing them seems to have no visible effect at all. The properties belonging to the object retain the values that you assign and return them when requested but the display does not change.
The DOM level 1 specification refers to IFRAME objects as IFrameElement objects and this makes them available in Netscape by virtue of its support for DOM level 1.
DOM level 2 adds the contentDocument properties.

Warnings:
Netscape does not support the <IFRAME> tag prior to version 6.0, but it does support an <ILAYER> tag, which describes an inline layer which is not the same thing but may provide a way to emulate the <IFRAME> functionality in some cases.
MSIE seems to have trouble locating an IFRAME object in the document hierarchy, and you cannot refer to the object directly in the same way that you can with other objects.
With an IFRAME object whose ID is "MYFRAME" this accessor works:

document.all.MYFRAME

But these accessors don't:

document.MYFRAME
MYFRAME

Even worse, the IFRAME appears to float in some separate plane to its containing object. Placing an <IFRAME> inside a <DIV> block exhibits some very strange behavior. Its position seems locked to the top left of the <DIV> but its right edge seems to be able to flow outside the <DIV> area.

Netscape 6.0, which implements IFRAME objects, does not appear to fare any better, exhibiting similarly strange behavior.

По неизвестни причини всичките Warnings важат и за Опера. Затова не го и ползвам.

There are three determined states the cat could be in: Alive, Dead, and Bloody Furious.
Отговор
в отговор на webname #3

fix - mahni width attribute na poslednata table

Mahni width atributa na poslednata ti tablica. Po tozi nachin layouta se oprawia.

pozdrawi

Отговор