Tomasz L.

Tomasz L. informatyk

Temat: jak wyciągnąć wartość z takiego diva

Mam coś takiego w div

<div elon_precision="1"
elon_lonformat="#0000000000000000[0].SCPTsetPnts#SI_LO.occupied_cool"
elon_name="N/Channel 1/SZSK_12R1/SZSK_12R1/nciSetPnts"
elon_lang="{elon_language}" elon_version_number="4.0"
elon_type="showvalue"></div>

na stronie wyświetla mi wartość
jak dam źródło strony to niestety tylko tekst powyższy
jak tą wartość wrzucić do jakiejś zmiennej js?
to jest kod z jakiegoś urządzenia napisanego w javie

konto usunięte

Temat: jak wyciągnąć wartość z takiego diva

Możesz pobrać element sprawdzając wartości poszczególnych jego atrybutów. Zerkając tylko na ten fragment kodu, ciężko dostrzec jakąś zależność, która pozwoliłaby wyłuskać akurat tego div'a ze struktury całej strony ale może to być nawet index tego elementu w strukturze DOM, wartość / kolejność elementu w kontenerze nadrzędnym lub inna właściwość.

Załóżmy, że pobierzesz już tego div'a do zmiennej element:

var wartoscKoncowa;
// sprawdzamy czy element ma w ogóle taki atrybut
if(element.hasAttribute("nazwa_atrybutu") {
// pobieramy wartość tego atrybutu
var wartoscAtrybutu = element.getAttribute("nazwa_atrybutu");
// dobieramy się do jego zawartosci pod warunkiem...
if(wartoscAtrybutu == "nasza_wartosc_oczekiwana") {
wartoscKoncowa = element.innerHTML;
}
}


Oczywiście to wszystko przy założeniu, że te atrybuty nie są jakieś dynamiczne, a nie jest to wykluczone.

Temat: jak wyciągnąć wartość z takiego diva

Trochę mało informacji, wszystko zależy czy taki div jest jeden, czy te atrybuty są generowane dynamicznie.
Ogólnie:

Można złapać go po jednym atrybucie np. jQuery:

var content = $("div[elon_precision]").html();


lub np. po atrybutach elon_* (zawartość jednego lub wszystkich div'ów):
http://jsfiddle.net/RKN25/
Tomasz L.

Tomasz L. informatyk

Temat: jak wyciągnąć wartość z takiego diva

Patryk A.:
Można złapać go po jednym atrybucie np. jQuery:
[/quote]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<script type="text/javascript" src="../scripts/echelon/EchelonInit.js"></script>
<script src="js/jquery-1.10.2.min.js"></script>
<script>
function catchValue() {

var elements = document.getElementsByTagName("div"),
i, j, len = elements.length, attrLen;

for (i = 0; i < len; i++) {
attrLen = elements[i].attributes.length;
for (j = 0; j < attrLen; j++) {
if (elements[i].attributes[j].name.indexOf("elon_") == 0) {
return elements[i].innerHTML;
}
}

}
return null;
}

function catchValueArray() {

var elements = document.getElementsByTagName("div"),
i, j, len = elements.length, attrLen, values = [];

for (i = 0; i < len; i++) {
attrLen = elements[i].attributes.length;
for (j = 0; j < attrLen; j++) {
if (elements[i].attributes[j].name.indexOf("elon_") == 0) {
values.push(elements[i].innerHTML);
break;
}
}

}
return values;
}

alert(catchValue());
alert(catchValueArray());

alert($("div[elon_precision]").html())</script>
</head>
<body>
<div elon_force_round_to_preset="true" elon_show_value_def="true"
elon_name="Nowy Sacz Dom/Channel 1/SZSK_4R1/Virtual Functional Block/Rez_nvo_06"
elon_lang="{elon_language}" elon_version_number="4.0"
elon_type="showvalue">ON/OFF</div>
</body>
</html>


wyświetla wartość null lub nic
dynamicznie podejrzewam, ze zmienia sie wartosc "schowvalue", lub jest to tylko informacja dla kolejnego skryptu w jaki sposób ma przedstawić dane
reszta jest stała i jest linkiem do zmiennej wewątrz tego urządzenia
elon_name jest adresem do wyświetlanej zmiennej

a plik do którego się odwołuje strone EchelonInit.js wygląda tak
try{if(top.document.body&&top.document.body.elon_redirect)
{top.window.location.href=top.window.location.href.replace("frameset.htm",top.document.body.elon_redirect);}}
catch(e){}Echelon=new Object();$a=Echelon;Echelon.window=window;EchelonTop=window;
try{var $b=null;while(true){$b=EchelonTop.frameElement.ownerDocument.parentWindow;if($b==null)$b=EchelonTop.frameElement.ownerDocument.defaultView;EchelonTop=$b;}}
catch(e){}if(EchelonTop.Echelon==null)EchelonTop.Echelon=new Object();elon=EchelonTop.Echelon;new function(){if(document.body!=null)document.body.disabled=true;
var $c=function(){if(EchelonTop.echelonInitializing==null){elon.m_includeCBs=[];EchelonTop.echelonInitializing=true;
var $d=EchelonTop.document.getElementsByTagName("HEAD");
var $e;if($d.length==0){var $f=EchelonTop.document.createElement("HEAD");var $g=EchelonTop.document.getElementsByTagName("HTML");$e=$g[0].appendChild($f);}else{$e=$d[0];}
var $h=EchelonTop.document.createElement("SCRIPT");$h.type="text/javascript";$e.appendChild($h);$h.src="/scripts/echelon/Boot.js";}$i();document.body.disabled=true;if(elon.m_includeCBs)elon.m_includeCBs.push($j);else{$j();}};var $j=function(){new elon.EchelonTopInit(document);};
var $i=function(){var $k=document.getElementsByTagName("IMG");for(var i=0;i<$k.length;i++){if($k[i].src.search("local:")==0){var $l=document.getElementById($k[i].src.slice(6
if($l&&$l.firstChild&&$l.firstChild.src)$k[i].src=$l.firstChild.src;}}};var $m;if(window.addEventListener)window.addEventListener("load",$c,false);
else if(window.attachEvent)window.attachEvent("onload",$c);};Echelon.IEworkaroundWrite=function($n){document.write($n);};
Marcin Gościcki

Marcin Gościcki Front-end
webdeveloper

Temat: jak wyciągnąć wartość z takiego diva

Tomasz L.:
Patryk A.:
Można złapać go po jednym atrybucie np. jQuery:

var content = $("div[elon_precision]").html();

<div elon_force_round_to_preset="true" elon_show_value_def="true" elon_name="Nowy Sacz Dom/Channel 1/SZSK_4R1/Virtual Functional Block/Rez_nvo_06" elon_lang="{elon_language}" elon_version_number="4.0" elon_type="showvalue">ON/OFF</div>


wyświetla wartość null lub nic

Wyświetla taką wartość bo Twój div nie ma atrybutu "elon_precision". Rozwiązaniem jest albo znalezienie jakiegoś atrybutu który występuje zawsze (może "elon_name"?) albo drugie rozwiązanie zaprezentowanie przez Patryka:
Patryk A.:
lub np. po atrybutach elon_* (zawartość jednego lub wszystkich div'ów): http://jsfiddle.net/RKN25/Ten post został edytowany przez Autora dnia 24.01.14 o godzinie 15:16

konto usunięte

Temat: jak wyciągnąć wartość z takiego diva

Czyt. nie oczekuj rozwiązania copy-paste-voila, tylko odpal konsolę narzędzi developerskich i metodą nawet "prób i błędów" postaraj się pozyskać ten obiekt analizując strukturę strony i próbując wyłuskać informacje na podstawie tam znajdujących się, już wyrenderowanych znaczników i atrybutów.
Tomasz L.

Tomasz L. informatyk

Temat: jak wyciągnąć wartość z takiego diva

Marcin G.:
Wyświetla taką wartość bo Twój div nie ma atrybutu "elon_precision". Rozwiązaniem jest albo znalezienie jakiegoś atrybutu który występuje zawsze (może "elon_name"?) albo drugie rozwiązanie zaprezentowanie przez Patryka:
Rozwiązanie zaprezentowane przez Patryka nic nie wyświetla.
przeszukiwanie po każdym z atrybutów daje tylko to co jest wpisane w tekście.
Tomasz L.

Tomasz L. informatyk

Temat: jak wyciągnąć wartość z takiego diva

Marcin Z.:
Czyt. nie oczekuj rozwiązania copy-paste-voila, tylko odpal konsolę narzędzi developerskich i metodą nawet "prób i błędów" postaraj się pozyskać ten obiekt analizując strukturę strony i próbując wyłuskać informacje na podstawie tam znajdujących się, już wyrenderowanych znaczników i atrybutów.
Problem w tym, że zarówno w podglądzie strony jak i w firebugu gdy podglądam kod to widzę tylko to co napisalem
a gdy wyświetlam stronę to widzę wartość i pojęcia nie mam który parametr za nią odpowiada i czy da się to w js czy czymś innym wyciągnąć.
Być może odpowiada za to jakiś skrypt który uruchamiany jest z EchelonInit.js i jakoś wymusza wyświetlenie w danym divie, ale jakoś tak, że w podglądzie tego nie widać, lub sam server jeszcze dodatkowo przetwarza html przez jakąś funkcję, która wyświetla potem wartość.Ten post został edytowany przez Autora dnia 24.01.14 o godzinie 16:47

konto usunięte

Temat: jak wyciągnąć wartość z takiego diva

Na pewno da się to jakoś odgrzebać, zdebugować i określić źródło generujące tą treść, chociażby analizując ruch sieciowy na witrynie (zakładka Network w Dev Toolsach, ew. Fiddler).

Czy strona jest wystawiona gdzieś "na zewnątrz"?
Tomasz L.

Tomasz L. informatyk

Temat: jak wyciągnąć wartość z takiego diva

Marcin Z.:sieciowy na witrynie (zakładka Network w Dev Toolsach, ew. Fiddler).

Czy strona jest wystawiona gdzieś "na zewnątrz"?
nie mam takiej możliwości na chwilę obecną
sprawdziłem ruch sieciowy i wychodzi, że po web services można by to ugryźć zapewne
Raw z fiddlera
strona co sekundę wysyła takie zapytanie do servera www

POST http://192.168.1.222/WSDL/iLON100.WSDL HTTP/1.1
Accept: */*
Accept-Language: pl
Referer: http://192.168.1.222/user/echelon/index.htm
soapaction: http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/action/List
messagetype: CALL
Content-Type: text/xml; charset=utf-8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)
Host: 192.168.1.222
Content-Length: 536
Connection: Keep-Alive
Pragma: no-cache

<?xml version="1.0" encoding="utf-8" ?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<Header>
<messageProperties xmlns="http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/message/">
</messageProperties></Header><Body><List xmlns="http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/message/">
<iLonItem><xSelect>//Item[UCPTlastUpdate>"2014-01-27T10:07:59.740Z"]</xSelect>
</iLonItem></List></Body></Envelope>
Piotr Potera

Piotr Potera Frontend Developer,
UI/UX designer

Temat: jak wyciągnąć wartość z takiego diva

@Tomasz Lukas
Ale ty nie napisałeś w ogóle, co chcesz wyciągnąć z tego DIVa ;-)

Następna dyskusja:

jak zrobic cos takiego




Wyślij zaproszenie do