webForumDet fria alternativet

Javascript error i vbulletin_global.js

Om webForum

12 svar · 704 visningar · startad av Engine^

Medlem sedan dec. 20003 887 inlägg
Frågan#1
Warning: test for equality (==) mistyped as assignment (=)?
Source File: [url]http://www.webforum.nu/clientscript/vbulletin_global.js[/url]
Line: 616, Column: 46
Source Code:
	if (r = this.id.match(/^([a-z]{1})([0-9]+)$/))

Bara ett likamedtecken som fattas... :)

red. Det var visst en rätt generell funktion, som används lite överallt, så jag ändrade rubriken.

Medlem sedan dec. 20025 483 inlägg
#2

Detta är inte ett fel, därav warning. I JavaScript är det tillåtet att tilldela variabler värden på det här sättet. Efter tilldelningen testas variabeln för sant eller falskt precis som vanligt.

Liknande syntax finns ju även i exempelvis C/C++.

Medlem sedan mars 20023 561 inlägg
#3

Men varför ha kod som ger varningar? Finns ju ingen vits med det.

Medlem sedan dec. 20025 483 inlägg
#4

Josef skrev:

Men varför ha kod som ger varningar? Finns ju ingen vits med det.

I mitt tycke är det inte språket i sig som skall ändras, utan den webbläsares JS-parser som inte följer reglerna.

Medlem sedan mars 20023 561 inlägg
#5

Peter S skrev:

I mitt tycke är det inte språket i sig som skall ändras, utan den webbläsares JS-parser som inte följer reglerna.

Må så vara.

Plats för en dålig liknelse: Du går på trottoaren. Det kommer en cykel, egentligen borde cykeln flytta på sig, men för att slippa bli omkullvräkt tar du ett steg åt sidan.

Är trött så ta det inte för allvarligt! ;)

Medlem sedan maj 200010 687 inlägg
#6

Att skriva bara = är ett ganska vanligt misstag när man vill jämföra. Antagligen därför den varnar.

Jag tycker det är ganska dumt att använda =. Visst man kan få gjort mer med mindre kod, men det blir sämre läsbarhet. Svårare att hänga med i vad koden gör.
C# har väl tagit bort det just p.g.a. detta..?

Medlem sedan dec. 20003 887 inlägg
#7

Peter S skrev:

Detta är inte ett fel, därav warning. I JavaScript är det tillåtet att tilldela variabler värden på det här sättet. Efter tilldelningen testas variabeln för sant eller falskt precis som vanligt.

Liknande syntax finns ju även i exempelvis C/C++.

Den typen av tilldelningar har en förmåga att ge upphov till svårfunna buggar. Det är inte ofta man stöter på den typen av kod.

Att jag skrev error i rubriken var ett dumt val iofs :OO

Men att parsern varnar är helt riktigt...

Medlem sedan mars 20025 907 inlägg
#8

Jag som inte har någon koll på javascript, är följande korrekt

//ersätt
if (r = this.id.match(/^([a-z]{1})([0-9]+)$/))

//med
r = this.id.match(/^([a-z]{1})([0-9]+)$/)
if(r)

?

Medlem sedan maj 200010 687 inlägg
#9

Har inte provkört koden, men det ser helt rätt ut.

Medlem sedan mars 20025 907 inlägg
#10

Har ändrat nu, är problemet borta?

Medlem sedan dec. 20003 887 inlägg
#11

Problemet borta :)

Duktig Peeer :bire

Dock märkte jag att det dök upp en varningstriangel när mitt svar blev submittat...

JavaScript Console skrev:

Warning: reference to undefined property subjectText.length
Source File: http://www.webforum.nu/clientscript/vbulletin_global.js
Line: 255

Medlem sedan mars 20025 907 inlägg
#12

Underligt, där har jag inte varit och ändat något. Fler som får felet, eller är det kanske rent av någon som vet hur man löser det? Har som sagt ingen koll på javascript.. ingen alls!

Medlem sedan dec. 20025 483 inlägg
#13

Problemet ligger i att validatePost() (i /clientscript/vbulletin_stdedit.js) anropas med 0 som andra argument. validateMessage() (som anropas av ovan nämnda funktion) försöker sedan läsa egenskapen length av 0, vilket orsakar felet.

Problemet går nog att lösa på ett par olika sätt. Ett av dessa kan vara att göra följande ändring i den senast nämnda funktionen:

// check for completed subject
if ([b]typeof subjectText == "object" &&[/b] subjectText.length < 1)
{
	alert(vbphrase["must_enter_subject"]);
	return false;
}

Fetstilt text är tillagd.

270 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)