javascript Error reporting
Jak můžeme získat chyby na htm html stránce, které se projeví u uživatele v prohlížeči.
Ukážeme si příklad, který odešle zprávu o tom, že stránka je o 100px šiřší, jak uživatelova CLIENTAREA ( to, co vidí uživatel ze stránky) prohlížeče a také, že stránka nemá nastaven charset na UTF-8
Kód sestává ze javascriptu a php scriptu, který bude na serveru ukládat chybová hlášení.
Ukážeme si příklad, který odešle zprávu o tom, že stránka je o 100px šiřší, jak uživatelova CLIENTAREA ( to, co vidí uživatel ze stránky) prohlížeče a také, že stránka nemá nastaven charset na UTF-8
Kód sestává ze javascriptu a php scriptu, který bude na serveru ukládat chybová hlášení.
Nejdříve javascript
Tento script vložíme až na konec htm html (nebo inc php šablony kde je ukončení ) stránky mezi tagy /body a /html
</body>
<script type="text/javascript">
var s = new String();
var bUtf8 = false;
var m = document.getElementsByTagName("META");
for(var i = 0; i < m.length; i++){
s = m[i].content;
s = s.toLowerCase();
var nP = s.indexOf('charset');
var nPutf = s.indexOf('utf-8');
if(nP != (-1) && nPutf != (-1))
bUtf8 = true;
}
var httpRequestMy;
var sIE = "", sFF = "";
var nClientW = (parseInt(document.body.clientWidth));
var nScrollW = (parseInt(document.body.scrollWidth));
var nRozdil = nScrollW - nClientW;
if(nRozdil > 100 || bUtf8 == false){
// IE/zbytek sveta
if (window.ActiveXObject) {
httpRequestMy = new ActiveXObject("Microsoft.XMLHTTP");
sIE = "-IExplorer-";
} else {
httpRequestMy = new XMLHttpRequest();
sFF = "-Firefox-and-others-";
}
var d = new Date();
var url = "//myweb.com/stat/error.php?mess=<?php echo $_SERVER [SCRIPT_NAME];?>-pageWidth-"
+ nScrollW.toString() + "---clientWidth-" + nClientW.toString()
+ "-date-" + d.toDateString()+ "-" + d.toTimeString() + sFF + sIE;
if(bUtf8 == false)
url = "//myweb.com/stat/error.php?mess=<?php echo $_SERVER [SCRIPT_NAME];?>-UTF-8-false";
httpRequestMy.open("GET", url, true);
httpRequestMy.onreadystatechange= function () {processRequest(); } ;
httpRequestMy.send(null);
}
else {
//alert(nRozdil);
}
/****************/
function processRequest() {
if (httpRequestMy.readyState == 4) {
if(httpRequestMy.status == 200) {
var response = httpRequestMy.responseText;
if (response == 'EMPTY') {
alert('empty');
}
else {
//alert('OK');
}
}
}
else {
// alert("Error page loading "
// + httpRequestMy.status +":"+ httpRequestMy.statusText);
}
}
</script>
</html>
error.php může obsahovat takový kód
<?php
function vytvorNovyAzapisDoSouboru($fname, $poleVstup)
{ // BEGIN function vytvorNovyAzapisDoSouboru
if(file_exists($fname))unlink($fname);
$fp = fopen($fname, "a");
if (flock($fp, LOCK_EX)) { // do an exclusive lock
foreach ($poleVstup as $key=>$value) {
if(strlen($value)>5)
fwrite($fp, $value."
"); // D, d M Y
}
flock($fp, LOCK_UN); // release the lock
} else {
echo "Couldn't lock the file !";
}
fclose($fp);
chmod($fname, 0777);
} // END function vytvorNovyAzapisDoSouboru
$mess = $_GET['mess'];
$poleVstup = array();
if(file_exists('err_mess.txt')){
$poleVstup = file('err_mess.txt');
}
array_push($poleVstup, $mess);
//print_r($poleVstup);
vytvorNovyAzapisDoSouboru('err_mess.txt', $poleVstup);
?>
77LW NO topic_id
AD
Další témata ....(Topics)
Jak vytvořit slovník podstatných jmen.
Velmi snadno. Stačí si stáhnout slovník pro kontrolu pravopisudo Open Office org a tam již druhy slov májí za lomítkem určující znaky.
//wiki.services.openoffice.org/wiki/Dictionaries#Czech_.28Czech_Republic.29
Ukázka obsahu slovníku:
alokuce/Zalokující/YN
alokátor/H
alolex/H
alomorf/H
aloový/YKRN
aloparentální/YKR
alopatický/YCRN
alopatie/Z
Dodržujte licence slovníků
Jak zjistit v javascriptu zda objekt existuje
How test if an object exists undefined or null.
if (typeof OBJECT_NAME != "undefined") {
//object exists ... execute code here.
}
// or best of use try catch
var nObject;
try{
nObject = image.image; // is image.image object?
}catch (e){
alert(e.message.toString()); // e.message == 'undefined' is null or not an object
return; // or continue if image.image is a object
}
// you can test now nObject as typeof nObject
if(typeof nObject == 'string') // or others etc.
{
// do something
}
// dont use this
if (OBJECT_NAME != null) {
//if object dont exists will error
}
Získání IP adresy v PHP.
$serverIP=$_SERVER['REMOTE_ADDR'];
echo "document.write("Your IP address is: <b>" . $serverIP . "</b>")";
Inheritance extends - dědění v třídách JavaScript.
Pokud nastane situace, že u několika objektů potřebujeme uložit více údajů a nechceme zasahovat již do základní třídy, můžeme jí rozšířit o další potřídu. Hlavní třídě budeme říkat PARENT (rodič) a podtřídě CHILD (dítě). To že DÍTĚ dědí z určité třídy doložíme výrazem "extends" a název třídy rodiče. Konstruktor RODIČE pak v třídě DÍTĚTE označíme výrazem super() a do závorek vložíme parametry, které bychom zadávali do třídy rodiče. Při vytváření objektu již můžeme použít přímo třídu DÍTĚTE a zadat parametry, které se přes super() dostanou i do třídy RODIČE. DÍTĚ má přístup ke všem privátním funkcím RODIČE, ale i k jeho proměnným (samozřejmě v rámci objektu vytvořeného přes myObjekt = new .....).
class Continent {
constructor(continent) {
this._continent = continent;
}
present() {
return ' is located in ' + this._continent;
}
}
class Country extends Continent {
constructor(continent, country) {
super(continent);
this._country = country;
}
show() {
return this._country + this.present() ;
}
}
myCountry = new Country("Europe", "Czech Republic");
// alert(myCountry.show());
Foreach fore each in javascript loop cycle example source code
Example code foreach for JavaScript.
var arr = new Array(1,2,3,4,5,6);// numbers or string put into array
for (var key in arr) {
window.alert("My array"
+ key
+ " = "
+ arr[key]);
}
// next example
arr.forEach(function(elem){
console.log(elem);
});
// next example
for (var i = 0; i < arr.length; i++) {
alert (arr[i]);
}
// next example for GECKO MOZILLA FIREFOX
var soucet = 0;
var obj = {var1: 5, var2: 13, var3: 8};
for each (var item in obj) {
soucet += item;
}
alert(soucet); // vysledek "26", coz je soucet 5+13+8
Each in jQuery get all document inputs type text and set value 0 if checkbox checked
function fc(th){
if( th.checked ){
$("input:text").each(
function() {
this.value = 0;
this.disabled = true;
}
);
}else{
$("input:text").each(
function() {
this.disabled = false;
}
);
}
<input type="checkbox" id="idCheck" onchange="fc(this);"> Checkbox
<input type="text" size="1" id="id1" value="0" />
<input type="text" size="1" id="id2" value="0" />
Editace: 18 10 2016
Počet článků v kategorii: 77
Url:javascript-error-reporting