---
title: "Förhindra att sidan öppnas i annans frameset"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/41155-förhindra-att-sidan-öppnas-i-annans-frameset"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Annette"
published: "2002-04-09T07:14:56.000Z"
updated: "2002-04-24T19:02:28.000Z"
replies: 13
views: 1582
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/41155-förhindra-att-sidan-öppnas-i-annans-frameset"
---

# Förhindra att sidan öppnas i annans frameset

## #1 — Annette, 2002-04-09T07:14Z

Vet att det finns ett färdigt javascript som förhindrar att sidan öppnas i någon annan sidas frameset. 

Någon som kan dela med sig av detta? :OO

Permalänk: https://www.webforum.nu/p/41155

## #2 — jonne, 2002-04-09T07:19Z

<http://www.jojoxx.net/jscript/archive/framebreak.html>

Permalänk: https://www.webforum.nu/p/640098

## #3 — jarvklo, 2002-04-09T22:52Z

Tänk bara på att just det där framebreakerscriptet bara funkar under vissa förutsättningar!!!!

Det funkar **inte**  om den sida som "tar in" din sida i ett frameset ligger på en annan domän än den som din sida "bor på" eftersom Javascripts säkerhetsmurar inte tillåter dig att skriva över top.location.href från en sida i en under-frame i det läget!

Exempel på sida med den föreslagna framebreakern: <http://member.webforum.nu/2241/framebreaker.html>

Exempel på hur den beter sig i en framesetsida på samma domän (framebreakern funkar):
<http://member.webforum.nu/2241/framebreakerdemo.html> 

Exempel på hur det blir när framesetsidan "bor på" en annan domän (framebreakern utslagen):
<http://ake.jarvklo.se/htmlexempel/framebreakerdemo.html>

För att nu ytterligare spä på eländet, så finns det en cache-relaterad bugg i NN4 (alla versioner)  som gör att din sida kan komma fram "skadad" med texten "\<h3\>Transfer interrupted\</h3\> inlagd mitt i din kod om du använder "top.location.href=..." - metoden direkt i \<head\>.
Men **det** problemet kommer du förbi genom att lägga koden i \<body onload="..."\> i stället...

Slutresultatet blir hursomhelst att du kan använda

```
<body onload="if (top.location.href != location.href) { top.location.href=location.href;}">
```

och vara medveten att det bara funkar mot "inramare" från din egen domän.

/red - exempelfilerna flyttade till nya platser

Permalänk: https://www.webforum.nu/p/640650

## #4 — Jojoxx, 2002-04-10T05:49Z

> ...Javascripts säkerhetsmurar inte tillåter dig att skriva över top.location.href från en sida i en under-frame i det läget!

Jodå, det är iofs tillåtet, men den är "write only". Du får alltså skriva till, men inte läsa från. Det hjälper å andra sidan inte speciellt långt i detta läge, men förhoppningsvis gör det sidan mindre intressant att lägga in från en annan domän när det hela tiden genererar ett felmeddelande.

Permalänk: https://www.webforum.nu/p/640668

## #5 — Jojoxx, 2002-04-10T18:31Z

Funderade lite på det där. Håller man sidan ren från javascript-fel i ev. andra script kan man göra så här (använda felmeddelandet i sig som en trig på att sidan ligger under fel domän):

```
function winerror(){
	top.location.href = location.href;
	return true;
}
window.onerror = winerror;
if (top.location.href != location.href){
	top.location.href = location.href;
}
```

Permalänk: https://www.webforum.nu/p/641004

## #6 — jarvklo, 2002-04-10T22:43Z

Way to go Jojoxx!

Nu funkar rambrytandet även "korsdomänvis"!

Exempel:
<http://ake.jarvklo.net/htmlexempel/framebreakerdemo2.html>  som försöker rama in <http://member.webforum.nu/2241/framebreaker2.html> med Jojoxx nya framebreaker.

/red: exempelfilerna flyttade till nya platser

Permalänk: https://www.webforum.nu/p/641143

## #7 — Patrik81, 2002-04-11T16:36Z

Snabb fråga

Med det nya scriptet... om någon på SAMMA domän nu försöker länka via ett annat frameset, vad händer då?

MVH Patrik

Permalänk: https://www.webforum.nu/p/641554

## #8 — Jojoxx, 2002-04-11T16:53Z

Då fungerar det som vanligt, alltså framen kommer att laddas överst.

Permalänk: https://www.webforum.nu/p/641567

## #9 — Patrik81, 2002-04-11T16:57Z

Jo, det ser jag ju nu, när jag verkligen läste koden... läste den förut men måste missat det...
Men ok, ny fråga då, om man själv har ett frameset, och vill förhindra att sidorna i detta frameset laddas från någon annans framset då?
 
\*klurar vidare\* ;)

MVH Patrik

Permalänk: https://www.webforum.nu/p/641569

## #10 — Jojoxx, 2002-04-11T17:03Z

Det är bara att göra kollen mot den aktuella frame-setten istället för aktuell sida;

```
var frameseturl="http://www.domain.se/myframeset.html";
function winerror(){
	top.location.href = frameseturl;
	return true;
}
window.onerror = winerror;
if (top.location.href != frameseturl){
	top.location.href = frameseturl;
}
```

Permalänk: https://www.webforum.nu/p/641573

## #11 — Patrik81, 2002-04-11T17:10Z

Där har vi ett stycke kick-ass kod!!!

MVH Patrik

Permalänk: https://www.webforum.nu/p/641578

## #12 — jarvklo, 2002-04-15T09:19Z

Funderade lite till ;)

Följande funkar också, med skillnaden att man inte behöver vara rädd för att ett fel i ett annat script på sidan orsakar en sidomladdning ;)

i \<head\>: 

```
<script type="text/javascript">
<!--
function breakout(){ 
	try { 
		if (top.location.href != location.href) { 
			throw('breakout NOW!'); 
		}	
	} 
	catch (everything) { 
		top.location.href = location.href; 
	} 
}
//-->
</script>
</head>
```

i \<body\>:

```
<body onload="breakout();">
```

Osäker på i vilken version av olika läsare som undantagshantering (try/catch) infördes, det funkar i "de moderna" (NN6, IE5+ samt Opera6) webbläsarna ;).

Prova scriptet från frameset-sidan <http://ake.jarvklo.se/htmlexempel/framebreakerdemo3.html> som laddar in framebrytarexemplet på <http://member.webforum.nu/2241/framebreaker3.html>

/red Exempelfilerna flyttade till nya platser

Permalänk: https://www.webforum.nu/p/646109

## #13 — draghund, 2002-04-24T09:16Z

Jag fattar inte!

Försöker använda mig av ovannämdna script , men får det inte att funka, det händer nada, vad gör jag för fel?

Permalänk: https://www.webforum.nu/p/656770

## #14 — jarvklo, 2002-04-24T19:02Z

Hmm...
Länk till sidan som inte funkar?

Permalänk: https://www.webforum.nu/p/657186

---

Tråden på webben: https://www.webforum.nu/amne/javascript/41155-förhindra-att-sidan-öppnas-i-annans-frameset
