ugrás a tartalomhoz

Tábla kezelő webalkalmazás

jeti · 2012. Júl. 10. (K), 23.29
Sziasztok!

Van egy javascriptes, kliens oldali webalkalmazásom, amelyben különböző táblákat lehet kezelni. Van egy közös adatmegjelenítő, adatfelvevő, adatmódosító és adattörlő függvénytár. Ezenfelül vannak egyedi függvények, amelyek az egyes táblákra specifikus funkciót valósítják meg.

1.) Hogy lehet a függvényt egy változóban eltárolt név alapján meghívni? Például az egyedi_fv(); szeretném kifejezni valahogy így: var fvnev="egyedi_fv"; fvnev(); de ez így nem működik, nem is tudom, hogy van-e ilyen, de valami ilyenre lenne szükségem. Más nyelvben olvastam ilyenről.

Az összes táblát egy exportáló függvény használja csak egyszerre. Ez nem működik túl hatékonyan. Jelenleg a javascript fájlban határozom meg a táblák szerkezetét. Valahogy így néz ki a táblák struktúrája és elérése:

 switch(tabla) {
 case 'tabla_neve':
  adatstruk.tabla='tabla_neve';
  adatstruk.tablanev="Tábla neve";
  adatstruk.tablafv=egyedi_fv; //ez csak terv -> egyedi_fv();
  adatstruk.felirat=new Array('Mező 1','Mező 2','...');
  adatstruk.nev=new Array('mezo1','mezo2','...');
  adatstruk.tipus=new Array('text','option','...');
  adatstruk.valasztek=new Array('',new Array('opció1','opció2','...'));
 break;
... 
Ebben az esetben mindig csak egy táblához férek hozzá és az exportálásnál mindig végig kell lépkednek a táblák tömbjén és a fenti módon egyesével kiválasztani a táblákat.

2.) Tud valaki javasolni valami egyszerűbb módszert? Próbálkoztam xml alapú megoldással, de sajnos nem sikerült. (<xml src="adatbazis_struk.xml" id="adatbazis_struktura"></xml> Ebben az esetben nem fértem hozzá az adatokhoz.)

3.) Végül: vannak a programból kifelé irányú linkek is. Ebben az esetben nem szeretném, hogy a hivatkozott lap lássa az legutóbbi előzmény képében a webalkalmazásomat. Be lehet azt állítani, hogy úgy viselkedjen, mintha egy új fület nyitottam volna a böngészőben és nincs előzmény?
 
1

függvény...

eddig bírtam szó nélkül · 2012. Júl. 10. (K), 23.42
function egyedi_fv(){
...
}

var fvnev=egyedi_fv;

fvnev();
Szóval csak annyi, hogy nem kell a függvény nevét idézőjelbe tenni.
-------
A 2. kérdésedre (ha jól értem, mit szeretnél) inkább JSON-t használnék, de konkrét kódot nem tudnék írni így hirtelen.
Bár nem teljesen tiszta, hogy mit is csinálnál és miért nem boldogultál az XML változattal.
Nem kizárt, hogy egyszerűbb lenne HTML+JS helyett XML+XSL-t használni. (bár ezt néhány régi böngésző nem szereti)
2

1,var egyedi_fn = function ()

solkprog · 2012. Júl. 10. (K), 23.45
1,
var egyedi_fn = function () {
    return 'hello vilag';
}
var tablafn = egyedi_fn;
console.log(tablafn());
2, json

3, kliens oldalon ilyenről nem tudok.
3

Ebben az esetben nem

Poetro · 2012. Júl. 11. (Sze), 06.25
Ebben az esetben nem szeretném, hogy a hivatkozott lap lássa az legutóbbi előzmény képében a webalkalmazásomat.

Ez alatt mire gondolsz? Hogy látja? Tudsz példát mutatni?
4

Szerintem el akarja takarni

eddig bírtam szó nélkül · 2012. Júl. 11. (Sze), 06.50
Szerintem el akarja takarni valamiért a refererben megjelenő címet.
(sose értettem, egyesek miért írják referernek a referrert... :-) )
5

sose értettem, egyesek miért

Poetro · 2012. Júl. 11. (Sze), 06.54
sose értettem, egyesek miért írják referernek a referrert

originally a misspelling of referrer
A referer elrejtésének meg nem igazán van értelme. Ha már eleve külső linkeket raksz az oldalra, akkor add már meg a tiszteletet, hogy meg is kapják ezt az információt.
7

Én is linkeltem egy

eddig bírtam szó nélkül · 2012. Júl. 11. (Sze), 07.03
Én is linkeltem egy magyarázatot a refererre :-)


Elrejteni meg - ha jól értem - nem magát a referert szeretné a kérdező, csak a konkrét oldalt, aminek az URL-jében esetleg tervezési hiba folytán olyan infók is belekerültek, amik... hát nem teljesen publikusak. Persze ez csak sejtés, én ebben az esetben törném a fejem valami hasonlón.
(extrém hülye példa: user adatlapja csak belépve lenne elérhető, az adatlapra mutató URL: http://szerverem.neve/adatlapok/usernev/ - ilyenkor a refererben ott lesz a felhasználó azonosítója, amit egyes, hozzám hasonlóan paranoid alakok nem szeretnek publikálni. :-) )
10

Szerver oldali átirányítás

Poetro · 2012. Júl. 11. (Sze), 09.20
Erre lehet csinálni szerver oldali átirányítást, ahogy például az itteni Blogmarkok is vannak. Azaz mondjuk van az example.com-on egy linked a következő formában: http://example.com/redirect?url=http%3A%2F%2Fweblabor.hu%2Fforumok%2Ftemak%2F112542 és a szerver oldalon csinálsz egy 301-es vagy jobb esetben 303-as átirányítást.

Biztonsági okokból talán még jobb, ha nem közvetlenül megadható az URL mint paraméter, hanem annak csak egy azonosítója ebben az esetben például http://example.com/redirect/123, ami szintén elvégzi a megfelelő átirányítást.
6

Próbálkoztam xml alapú

Poetro · 2012. Júl. 11. (Sze), 06.56
Próbálkoztam xml alapú megoldással, de sajnos nem sikerült.

Hogyan próbálkoztál vele, és mi nem sikerült?
8

Függvény hívása változó alapján

Hidvégi Gábor · 2012. Júl. 11. (Sze), 07.06
Pl.:
var obj = {
  fv1: function fv1() {
  },
  fv2: function fv2() {
  }
};

var valtozo = 'fv1';
obj[valtozo]();
9

Szerintem jó az XML

Karvaly84 · 2012. Júl. 11. (Sze), 08.31
Szerintem jó az XML elgondolás, csak ezt ha lehetséges AJAX-al behúzni, és írni rá egy parser-t, ami táblázatot csinál belőle.
11

2. kérdés

jeti · 2012. Júl. 11. (Sze), 11.07
Köszönöm a segítségeket. Már megy a függvény meghívás. A szerveroldali átirányítás is egy jó megoldás, bár azt hittem lesz egyszerűbb megközelítés is. Ez a kliens oldali program akár egy böngésző kiegészítőnek is tekinthető, tehát nem egy publikus oldal. Az igazán jó megoldás az lenne, ha nemcsak egy oldalra mutató linket készítene, hanem az oldalból a megfelelő információt ki is szedné. De ez már szerintem inkább PHP.

A javascript-tel és az XML-lel csak most ismerkedek. Ez lehet a fő oka sikertelenségemnek. Valahol olvastam, hogy a <xml src="adatbazis_struk.xml" id="adatbazis_struktura"></xml> tag-et csak az egyik böngésző támogatja és szabványban sincs benne. Természetesen én egy másik böngészőt használok... De ilyenekkel próbálkoztam:
document.write(document.getElementById("adatbazis_struktura").tabla);
Ha ez nem megy akkor valószínűleg AJAX lesz. Ilyet már csináltam is. Csak most egy statikus fájlt várok, nem egy szerveroldali lekérés kimenetét.
A fő kérdés az, hogy melyik a kevésbé memória igényes és gyorsabb folyamat: folyamatosan egy változatlan XML fájlt lekérdezni vagy már eleve a javascriptben definiálni egy objektumban az egész struktúrát?
A JSON is egy jó megoldás, hasonlít PHP több dimenziós asszociatív tömbjére. Ilyet szerettem volna létrehozni már eleve a javascriptben, de csak eddig jutottam. Az objektumban a legfelső szint hiányzik, ahol a táblákat lehetne kiválasztani.
De lehet, hogy inkább az XML-t alkalmaznám, mert az úgyis sokkal népszerűbb. A http://hu.wikipedia.org/wiki/JSON XML részében az alsó megoldás elég egyszerűnek és könnyen átláthatónak tűnik.
12

Csak most egy statikus fájlt

Poetro · 2012. Júl. 11. (Sze), 11.38
Csak most egy statikus fájlt várok, nem egy szerveroldali lekérés kimenetét.

Miért, szerinted a kliens oldalról szemlélve a kettő között van különbség? Ott meghívsz egy URL-t, és arra kapsz egy választ. A kliens nem tudja, hogy ez statikus vagy dinamikusan generált, sőt nem is kell tudnia róla.
13

XSLT

Hidvégi Gábor · 2012. Júl. 11. (Sze), 11.44
XMLHttpRequesttel betöltheted az XML-t a memóriába, és abból XSLT segítségével gyárthatsz bármilyen HTML-t. Ha tisztán javascript mellett döntesz, akkor végeredményben szerintem tovább tart a munka, bár egyszerűbb lehet, ha még nem ismered az XSLT-t.

Ha több mint tíz éves gépeken fog futni a program, akkor érdemes foglalkoznod a memória- és sebességproblémával, egyébként pedig nem.
14

XSLT hogyan?

eddig bírtam szó nélkül · 2012. Júl. 11. (Sze), 12.00
Beírva az XML-be stílusként? Vagy valami böngészőfüggetlen módon generálni a HTML-t?
Csak azért kérdezem, mert múlthéten megnéztem, mit szól a mobilom egy XML+XSLT kimenethez és hát... szóval igen csúnyán nézett rám a böngészője. ;-)
(végül közölte, hogy ezzel nem tud mit kezdeni, de biztos-ami-biztos, elrakta, mintha valami RSS feed lett volna :-)) )
15

Egy XML-ben lehet tárolni

Hidvégi Gábor · 2012. Júl. 11. (Sze), 12.07
Egy XML-ben lehet tárolni XSLT stíluslapot is az adatok mellett, de célszerűbb két fájlban, és ezeket mondjuk XMLHttpRequest segítségével beolvasni. Mondjuk ha ez utóbbi eset nem működik a mobilon, az első sem fog.
16

Nem erre gondoltam egyébként,

eddig bírtam szó nélkül · 2012. Júl. 11. (Sze), 12.11
Nem erre gondoltam egyébként, hanem arra, hogy netán van valami JQuery v. hasonló eszköz, amivel a böngésző ezirányú tudásától függetlenül megoldható, hogy az XML+XSLT-ből HTML legyen.
17

Macerás

Hidvégi Gábor · 2012. Júl. 11. (Sze), 12.13
99%, hogy nincs pusztán javascript alapú XSL transzformáció, ráadásul szerintem használhatatlanul lassú is lenne.
18

Memória/sebesség

Pepita · 2012. Júl. 17. (K), 01.01
Mostanában láttam néhány honlapot, amik js-e percekig 100%-ra eszik a procimat, és az IE az adott lappal 100+ mega memóriát igényel. Tehát ki lehet fektetni a mai gépeket is, nem korlátlanok a keretek.