2011 18 februari 2011

IE Javascript Fel: Objektet stöder inte egenskapen eller metoden

Hade denna märkliga fråga, där en del av Javascript fungerade bra i alla webbläsare ans som vanligt bar IE :) ... Enkelt det var, men eftersom skriptet inte skrevs av mig, det tog ett tag att felsöka detta "Objektet stöder inte den här egenskapen eller metoden" error som bara IE kastade upp. Förmodligen! Om jag skulle skriva manus, skulle jag inte ha fått detta fel alls, liksom inte blanda mina variabelnamn med fältet Ids :).

Problem: Objektet stöder inte egenskapen eller metoden (på linje 3)

function funzoneSP(){ document.getElementById('video_id').style.visibility="hidden"; shortdesc = document.getElementById('shortdesc').value; .... } 

Lösning:
Felet alstras på thirdrow i exemplet ovan (linje 3 ... "shortdesc = document.getE ...."). Jag försökte alla slags dumma saker, att jag inte ens är värt att nämna här och äntligen gissa vad! bara ändra shortdesc var till något annat blivit av felet. I grund och botten! Variabelnamnet fick skiljer sig från den fieldID


2009 24 mars 2009

Är avaktiverat = "true" och inaktiverade = "false" samma?

Detta sådana gamla skolan, men som vanligt är det mitt minne komplement ...
Så är avaktiverat = "true" och inaktiverade = "false" same? Ja
... Tro inte, bra! Thats hur det är ... här är några snabba förklaring ...
"Inaktiverad" är ett attribut av någon form inslag / område och därmed kan acceptera något värde genom sin natur.

Så länge detta attribut finns, kommer elementet inaktiveras oberoende av dess värde. för t.ex..
<input type="text" value="This är disabled" disabled>
<input type="text" value="This är disabled" disabled="disabled">
<input type="text" value="This är disabled" disabled="true">
<input type="text" value="This är disabled" disabled="false">

Alla ovanstående kommer att göra detta formulär fältet "funktionshindrad".

Helt enkelt inte ge attributet "Disabled" håller Field "nedsatt arbetsförmåga" ... som nedan

<input type="text" value="This inte disabled" />

Kom ihåg "Varje värde (eller inget värde alls) av de funktionshindrade attribut kommer webbläsaren att göra den funktionshindrad". För att hålla saker och ting klart för oss W3C rekommenderar att vi använder inaktiverat = "funktionshinder" i dessa situationer.

Det är skillnad men när vi använder detta attribut i JavaScript ...

document.form.element.disabled = true; / / elementet inaktiveras
document.form.element.disabled = false; / / elementet aktiveras

De ovan anförda argumenten gäller även för dessa attribut och element:

  • kontrolleras (radio knappen och rutan)
  • vald (tillval)
  • nowrap (TD)

2009 7 Mars 2009

Ringa flera Windows onload funktioner i JavaScript

Heres en annan liten lappa av Javascript knep som jag var tvungen att gräva runt eftersom situationen commaned det. I en av mina webbplatser, hade jag denna situation där jag var tvungen att genomföra "windows.onload" två gånger. Det första som skulle kom till en oerfaren sinne som mitt (Jag måste ärligt säga att eftersom jag har använt JavaScript-ramverk och bibliotek, har jag forgotton att göra enkla saker på egen hand ... sorgligt men sant), är följande metod ...

 window.onload = onloadfn1;
 window.onload = onloadfn2;
 window.onload = onloadfn3;
 etc. ..

Ledsen att säga men, brukar detta arbete ... inte vill diskutera genomförandet vetenskapen av Javascript mycket ... men enligt min senaste erfarenhet, (onloadfn3) endast den sista funktionen faktiskt sjuk får avrättas.

I normala fall, till skillnad från min (som jag ska tala om lite senare) ... du kan göra något av följande för att utföra mutliple onload funktion ....

Eller nåt här

 Funktionen doOnLoad () {
         onloadfn1 ();
         onloadfn2 ();
         onloadfn3 ();
 }
 window.onload = doOnLoad;

För min nuvarande situation, kan jag inte använda någon av ovanstående ...
Varför måste jag ringa windows.onload två gånger, snarare att ringa två funktioner i en enda onload funktion? Här är snabb titt på mitt problem uttalande ...

"Mina sajtens sidor är uppbyggda likt WordPress temat .... dvs det finns en gemensam header.php och footer.php som får ingå i alla webbplatsens sidor. Det finns en onload funktion implementering i footer.php att göra några vanliga onload funktioner. Och det finns få sidor som behöver något eget OnLoad, bortsett från dem som gjorts av vanliga onload funktion. Om jag tilldelar callback-funktion direkt till window.onload handler, kommer den att över-rider som tidigare tilldelats återbesök i footer.php "

.... Är mitt problem förstås :) ?

Tja! det finns få lösningar som jag hittade. De är alla mycket lika och i huvudsak implementions en lösning som ges av Simon Willison ( http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...

Lösning:

Helt enkelt lägga till den här JavaScript-kod till plats ...

 Funktionen addLoadEvent (FUNC) {
     var oldonload = window.onload;
     if (typeof window.onload! = 'funktion') {
        window.onload = funktion
     } Else {
        window.onload = function () {
            if (oldonload) {
                   oldonload ()
           }
           FUNC ()
        }
    }
 }

Och kallar det istället för den vanliga "windows.onload"

 addLoadEvent (FunctionToRunOnPageLoad);
 addLoadEvent (function () {
 / * Mer kod körs när sidan laddas *
 }); 

Fördelar med detta kodsträng ...
1. I första hand låter den du har flera windows.onload händelser, anropas från separata delar av din kod, utan overridding den tidigare definitionen
2. Det är verkligen diskret. Den kan placeras i en fil med dina andra skript eller i en separat fil.
3. Det fungerar även om window.onload redan har ställts in.


2008 25 december 2008

Laddar JavaScripts Dynamiskt

Ibland för att hålla pageweight ner ... vi har delat in våra manus i fragment ... Dessa javascript fragment kan laddas när så krävs (på en händelse eller klicka på en länk eller knapp etc.).

Lastning Javascripts är dynamiskt enkel och ganska rakt fram som nedan ...

= “text/javascript” > <Script type = "text / javascript">
Funktionen loadNewScript (källa) {
var s = document.createElement ('script');
s.setAttribute ("typ", "text / javascript ');
s.setAttribute (src ", källa);
document.body.appendChild (s);
}
</ Script>

och du kan ha följande samtalet länken någonstans i kroppen, eller kan du ha detta skript "onLoad" av själva dokumentet ...

= “javascript:loadNewScript('myDynamicScript.js');” >Load Dynamic Script</ a > <A href = "javascript: loadNewScript (myDynamicScript.js ');"> Ladda Dynamisk Script </ a>

eller

<body onload="loadNewScript('myDynamicScript.js');">


2008 3 Oktober 2008

Enkel, Lätt, Cross Browser album för din webbsida

Inte för att det finns bara ett fåtal album är att du kan hitta när du google. Problemet med de flesta av de ljusbord som jag fann var att de alla verkade använda det ena eller andra tunga vikt ramar JavaScript som jQuery, Prototype MooTools och liknande. De är alla svala och flott söker. Men om ditt krav är "men jag vill ha en enkel och lätt Lightbox script för min sida", så här är det;

Några trevliga funktioner i ljusbord

  1. Mycket lätt
    en. 4KB av manus när packade (8 kb packas upp)
    b. 2 kb av CSS
    c. Få rader HTML för ljusbord behållaren
  2. Enkel att förstå och tillämpa
  3. Kan ha flera Ljusbord på samma sida.
  4. Samma ljusbord behållaren används för att visa, olika innehåll (som separat ingår som dolda divisioner i sidan), beroende på länken / alternativ som klickas.
  5. Automatiskt centreras, med hänsyn till alla faktorer såsom Fönster höjd och bredd (skärmupplösning), sidan bläddra belopp och höjden på innehållet i ljusbord
  6. Testad i IE 7 & FF

Visa Demo |
Ladda ner Lightbox Källa Zip (Nedladdat 1792 gånger)


Använda Lightbox [filerna i zip-filen]

jo.js och jo_pack.js [packat version]: - en enkel uppsättning JavaScript-objekt [JO], som innehåller element, fönster och dokumentera skript positionering. Du kan öppna JO.JS om du vill få händerna smutsiga med några avancerade Javascripting, skapa abstrakta funktioner, sträckande element egenskaper och liknande. Om du inte för mycket i Javascripting, låta bli.

lightbox.js, lightbox_pack.js [packad version] - innehåller ljus skript låda manager. Om du är sidkonstruktör ansvarar också med att genomföra ljusbord på sidan, måste du förstå LightBoxManager. LightBoxManager innehåller i princip bara två funktioner showLightBox och closeLightBox.

lightbox.css: - Om du vet CSS, kan du spela runt med lightbox.css för att anpassa utseendet-n-känner lightbox.css

index.html: Exempel genomförandet av ljusbord med två olika innehåll

lb_underlay_bkg.png: - Detta är lätt / lik genomskinlig bild som används bakgrunden till ljusbord underlaget [underlaget är lagret under lighbox, som hindrar användaren från att klicka någon annan enhet på sidan, medan ljusbord är öppen]. Man kan använda vilken bild eller en fast färg för detta ändamål, beroende på den sida konstruktion och kravet.

icon_lb_close.gif: - Bilden av nära ljusbord handtag högst upp till höger i ljuslåda. Kan använda valfri bild som per design

Visa Demo |
Ladda ner Lightbox Källa Zip (Nedladdat 1792 gånger)

Låt oss ha dina kommentarer och feedback ...


2008 13 september, 2008

JavaScript: Redigera webbsida i webbläsaren

Tja, måste jag säga, inte en sådan användbar del av vetenskapen, men om du är en webbutvecklare, kan komma till hands, en dag (eller kommer det?). Här är liten bookmarklet, vilket gör det möjligt att redigera webbsidan för en webbplats.
Och ledsen! Du kan spara resultaten på din lokala dator bara.

javascript: document.body.contentEditable = "true"; document.designMode = 'på'; void 0


2008 2 sep 2008

CSS hack: Javascript, CSS, HTML för endast Firefox

Många gånger har vi känner behov av att skriva webbläsaren specfic hacka (även om det inte är en god praxis, vi UI utvecklare måste ta till sådana onda tills den stora Webbläsare Wars kommer till ett stillestånd). Tidigare hade jag nämnde i artikeln För din IE endast , hur man skriver en CSS utdrag som skulle vara synlig för IE-webbläsare <IE7 bara.

Igår hade jag ett fall, där jag ville skriva något FireFox specifika CSS snippets. Tja! Jag är inte säker på om det finns en CSS-koden för den här men det finns en HTML. Det finns en hake, detta stycke HTML-doesnot pass HTML validering. Men, anywaz! Om du har fastnat dåligt eller som sådant, har ingen fråga för validering (någon gång måste vi vara grym), kan du använda följande för att förklara en länk till en FF enbart stilmall eller bara koda CSS inom detta block. Koden är

<comment> Sätt din FireFox bara HTML / CSS / Scripts här </ kommentar>

t.ex.
<comment>
<style>
/ * Stilar för FF enbart * /
fieldset {border: 1px solid # DDDDDD;}
</ Style>
</ Kommentar>

I "glad för tillfället ...


2008 September 1, 2008

Ta bort vissa objekt från en javascript array som matchar en godkänd sträng

Här är snabbt sätt att förlänga den ursprungliga Javascript Array-objekt, bara för att göra det ...

Array.prototype. removeItem =function(str) {
for(i=0; i<this.length ; i++){
if(escape(this[i]).match(escape(str.trim()))){
this.splice(i, 1); break;
}
}
return this;
}

Så nu kan du göra något så här ...

var animals= new Array("dog","lion","cat","tiger","elephant");
animals. removeItem ('tiger');

Nu djuren array innehåller "hund", "lejon", "katt", "elefant",

PS: Och här är String Trim Prototype också ...

String.prototype.trim=function(str) {
str = this != window? this : str;
return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}


Njut av ....


2008 15 maj, 2008

Best Practices: Arbeta med JavaScript: s

Inkludera JavaScript s längst ner i HTML-dokument

Om du inte har document.write (eller någon dynamisk generering av sidans innehåll med hjälp av javascript) för att infoga en del av sidans innehåll i dina skript, flytta skriptet include till botten av sidan, före utgången av BODY-taggen.
Den HTTP/1.1 Specifikationen tyder på att webbläsare ladda inte mer än två komponenter parallellt per värdnamn. Om du tjänar dina bilder från flera värdnamn, kan du få mer än två hämtningar ske parallellt. Medan en skript hämtar dock kommer webbläsaren startar inte några andra nedladdningar, även på olika värdnamn.
Det finns också sätt att dynamiskt skapa SCRIPT noder och ladda avlägsna skript efter att sidan laddas med AJAX.

Externaliserar man JavaScript s

Använda externa JavaScript-filer kommer att resultera i snabbare laddning av sidor eftersom JavaScript-filer cachelagras av webbläsaren. Inline JavaScript s "i HTML-dokument blir laddas varje gång HTML-dokumentet begärs. Detta kan faktiskt minska antalet HTTP gjort förfrågningar, men det senare ökar storleken på HTML-dokumentet. Extern JavaScript s cachelagras av webbläsaren, storleken på HTML-dokumentet minskar utan att öka antalet HTTP-förfrågningar.
Observera att om användarna på din webbplats har flera sidvisningar per session och många av dina sidor återanvända samma skript och stilmallar, finns det en större risk nytta cachade externa filer.

Packa dina JavaScript-filer

I fall av JavaScript, till skillnad från CSS kan filerna knastrade använder vissa standardalgoritmer som skulle ge en reducerad filstorlek än att helt enkelt avlägsna platser eller flikar. Ett exempel på javascript packare finns här http://dean.edwards.name/packer/

Bli av dubbletten Scripts

Det är mycket ovanligt att hela skript kan dupliceras, men en översyn av de tio bästa amerikanska webbplatser visar att två av dem innehåller en duplicerad manus. Duplicera manus men uppenbarligen reducerar prestandan genom att skapa onödiga HTTP-förfrågningar och bortkastade JavaScript genomförande.
Också, i många fall, även om skript namnen är olika, finns det en risk för dubbla skript inom samma sida på grund av lag storlek och antal av skript.

Minimera tillgång DOM element där det är möjligt

Komma DOM element med JavaScript är långsam så för att ha en mer lyhörd sida bör du:
• Cache hänvisningar till tillgängliga uppgifter
• Uppdatera noder "offline" och sedan lägga till dem i trädet
• Undvik att fästa layout med JavaScript

Separat beteende från innehåll och presentation

Precis som vi separat presentation (CSS / XSLT) från innehåll (XHTML / XML), bör vi också skilja Behavior (Javascript). Detta kallas diskret Javascript. Precis som vi länkar till externa CSS-filer bör vi länka till externa JavaScript-filer.

Istället för att hårdkoda beteende i innehåll (t.ex. onMouseOver, onclick, etc.), bör beteendet vara dynamiskt till element, klasser och unika element (IDS) med hjälp av DOM. Den grundläggande dokument, innehåll bör endast innehålla giltig XHTML / XML och ingen javascript.
Javascript måste öka innehåll genom att lägga beteende. Innehållet bör vara användbara och kan användas utan javascript (eller utan full javascript stöd).


2008 15 mars 2008

Irriterande Välj Boxes synliga genom Popup sektionerna

Vid flera tillfällen medan du gör sidlayouter med popup divisioner / lightboxar / tips etc vi kommer i situationer där någon form Markera objekt råkar vara under dessa POPUP sektionerna, genom design och det märks genom att .... FY!

Tja! du kan enkelt fixa detta genom att justera dina Z-index värden på lämpligt sätt för FF och IE7. Men Good Old (pun intended) IE6 inte beter sig som avsett .... SELECT BOX lyser igenom även när du har några drastiskt höga z-index värden enligt PopUp Division ... Bummer!!

Det finns INGA korrigeringar för detta problem, men det finns, tror jag, mer än ett fåtal sätt att arbeta-runt detta problem, men Im här för att berätta den enklaste lösningen som jag använder, som fungerar bra för mig, i de flesta fall ....

"Dölj ROUGE SELECT BOX när du visar POPUP"

Bara i skriptet textsnutt där du visar din popup, lägg till en bit skript för att ställa in synlighet för SELECT Box till "Hidden"

document.getElementById ('my_select) style.visibilty = "dold".

Och kom ihåg att sätta på den igen slutet av din popup Division

. document.getElementById ('my_select) style.visibilty = "synliga";

där "my_select" är ID för den irritation SELECT Box

Hoppas att detta hjälper ...

PS. Det finns såklart andra alternativ som dynamiskt positionining en IFRAME (samma storlek som du PopUp) under Popup DIV ... Detta fungerar bra också, men med ett tillägg av massor av DOM element, manus och huvudvärk. Jag har använt denna lösning också, och om du behöver någon hjälp med det här alternativet, låt mig veta. Kommer vara glad att hjälpa till!


NDK hem | Att uttrycka IT | uttrycka Palate | uttrycka Penmenship | uttrycka Awe | uttrycka mig