473,796 Members | 2,628 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

IE6 Nesting Problem?

Hi. I am trying to get some javascript to work in IE6, from the
address line. It works in Firefox and, I believe, IE7.

It appears that with some number of nested structures, the code does
not execute. Take a level or two out and it works. The code below is
nonsense, but illustrates the problem.

This works:

javascript: for( a=1;a<=10;a++ ) { for( b=1;b<=10;b++ ) { if( q<1000 )
{ for( c=1;c<=10;c++ ) { for( d=1;d<=10;d++ ) { if( a 0 ) { if( a <
2000 ) { x=10; q++; } } } } } } } for( a=1;a<=10;a++ )
{ for( b=1;b<=10;b++ ) { if( q<1000 ) { for( c=1;c<=10;c++ )
{ for( d=1;d<=10;d++ ) { if( a 0 ) { x=10; q++; } } } } } }
alert( q ); void( 0 );

But this doesn't:

javascript: for( a=1;a<=10;a++ ) { for( b=1;b<=10;b++ ) { if( q<1000 )
{ for( c=1;c<=10;c++ ) { for( d=1;d<=10;d++ ) { if( a 0 ) { if( a <
2000 ) { x=10; q++; } } } } } } } for( a=1;a<=10;a++ )
{ for( b=1;b<=10;b++ ) { if( q<1000 ) { for( c=1;c<=10;c++ )
{ for( d=1;d<=10;d++ ) { if( a 0 ) { if( a < 2000 ) { x=10; q+
+; } } } } } } } alert( q ); void( 0 );

I've tried declaring the variables, blah blah blah. Still breaks. Is
this a memory issue? Am I missing something obvious in the code?
Thanks for any help!

Here's a prettied version:

javascript:
for( a=1;a<=10;a++ ) {
for( b=1;b<=10;b++ ) {
if( q<1000 ) {
for( c=1;c<=10;c++ ) {
for( d=1;d<=10;d++ ) {
if( a 0 ) {
if( a < 2000 ) {
x=10;
q++;
}
}
}
}
}
}
}
for( a=1;a<=10;a++ ) {
for( b=1;b<=10;b++ ) {
if( q<1000 ) {
for( c=1;c<=10;c++ ) {
for( d=1;d<=10;d++ ) {
if( a 0 ) {
if( a < 2000 ) {
x=10;
q++;
}
}
}
}
}
}
}
alert( q );
void( 0 );

Mar 14 '07 #1
25 2607
On Mar 14, 12:57 pm, bweaveruse...@g mail.com wrote:
Hi. I am trying to get some javascript to work in IE6, from the
address line. It works in Firefox and, I believe, IE7.

It appears that with some number of nested structures, the code does
not execute. Take a level or two out and it works. The code below is
nonsense, but illustrates the problem.

This works:
It doesn't.
>
javascript: for( a=1;a<=10;a++ ) { for( b=1;b<=10;b++ ) { if( q<1000 )
Error: q is not defined.

If you want others to consider your question, post code that is easily
read. Also:

- highlight the differences between the 'working' and 'not working'
code
- advise what result indicates 'it works'
- report any error messages you get
--
Rob

Mar 14 '07 #2
On Mar 13, 11:51 pm, "RobG" <r...@iinet.net .auwrote:
On Mar 14, 12:57 pm, bweaveruse...@g mail.com wrote:
Hi. I am trying to get some javascript to work in IE6, from the
address line. It works in Firefox and, I believe, IE7.
It appears that with some number of nested structures, the code does
not execute. Take a level or two out and it works. The code below is
nonsense, but illustrates the problem.
This works:

It doesn't.
javascript: for( a=1;a<=10;a++ ) { for( b=1;b<=10;b++ ) { if( q<1000 )

Error: q is not defined.

If you want others to consider your question, post code that is easily
read. Also:

- highlight the differences between the 'working' and 'not working'
code
- advise what result indicates 'it works'
- report any error messages you get

--
Rob
Hi Rob.

I posted the working and broken code as copied into the address bar of
the browser, however I also posted a prettied version of the broken
code for readability. The first bit of code *does* work in IE6 (and
firefox etc) from the browser address field. I realize q isn't defined
but neither are a b c and d. As I also mentioned in my post, I have
tried declaring the variables, with similar results.

The difference in the two snippits is a single additional if( a <
2000 ) test in the second set of nested for loops. Removing that test
yields the working alert( q ) while leaving it in does not.

I get no error messages, unless they are buried in some console
somewhere.

Regardless, unless I have some obvious syntactical error, the point is
that some number of nesting structures (loops, tests, etc.) appears to
make javascript from the IE6 browser address bar not work. Since I am
not an IE6 javascript whiz, I thought it might ring a bell with
someone here.

Thanks.

Mar 14 '07 #3
VK
On Mar 14, 10:00 am, bweaveruse...@g mail.com wrote:
I posted the working and broken code as copied into the address bar of
the browser, however I also posted a prettied version of the broken
code for readability. The first bit of code *does* work in IE6
No, it doesn't - at least in the programming sense of the word "work".
Phylosophical interpretations of "work" as "having a unrealized
potention to work" and similar are irrelevant here I guess ;-)
Rob pointed out the problem already: because you didn't instantiate q
variable, by reaching the statement if (q < 1000) you are getting
"Undefined identifier" run-time error. After adding q = 0 before loops
the program _works_ so it executes all loops and alerts 1000.
This way the particular code your posted has no UA-dependant problems
but it has the pointed coding error to correct.

On a big run as "can a very big bookmarklet do not work on IE?" the
answer is yes, you may hit the URL length limit imposed by IE (both 6
and 7). This limit is 2,048 characters minus the number of characters
in the actual path. javascript: pseudo-protocol is affected by this
limit as well. Because the exceeding part is simply being truncated, a
proper by itself code may become broken if used for bookmarklet. This
is why while making especially complicated bookmarklet or very long
GET requests watch closely the string length.

Hope it helps.

P.S. See also http://support.microsoft.com/kb/208427

Mar 14 '07 #4
Thanks. However, turns out it's much worse than that. IE6 apparently
has a limit on bookmarklets of around 500 bytes, slightly more for
IE6, slightly less for IE6 SP2.

http://subsimple.com/bookmarklets/rules.asp

Thanks for making me think about length. At first I thought you were
smoking something since the code wasn't nearly 2K long. However, a
simple search for IE6 bookmarklet length turned up this *stupid*
limitation of IE6. Hopefully I can get it to work by loading an
external js file.

Thanks again.

On Mar 14, 8:48 am, "VK" <schools_r...@y ahoo.comwrote:
On Mar 14, 10:00 am, bweaveruse...@g mail.com wrote:
I posted the working and broken code as copied into the address bar of
the browser, however I also posted a prettied version of the broken
code for readability. The first bit of code *does* work inIE6

No, it doesn't - at least in the programming sense of the word "work".
Phylosophical interpretations of "work" as "having a unrealized
potention to work" and similar are irrelevant here I guess ;-)
Rob pointed out the problem already: because you didn't instantiate q
variable, by reaching the statement if (q < 1000) you are getting
"Undefined identifier" run-time error. After adding q = 0 before loops
the program _works_ so it executes all loops and alerts 1000.
This way the particular code your posted has no UA-dependant problems
but it has the pointed coding error to correct.

On a big run as "can a very big bookmarklet do not work on IE?" the
answer is yes, you may hit the URL length limit imposed by IE (both 6
and 7). This limit is 2,048 characters minus the number of characters
in the actual path.javascript : pseudo-protocol is affected by this
limit as well. Because the exceeding part is simply being truncated, a
proper by itself code may become broken if used for bookmarklet. This
is why while making especially complicated bookmarklet or very long
GET requests watch closely the string length.

Hope it helps.

P.S. See alsohttp://support.microso ft.com/kb/208427

Mar 14 '07 #5
VK
On Mar 14, 5:56 pm, bweaveruse...@g mail.com wrote:
Thanks. However, turns out it's much worse than that. IE6 apparently
has a limit on bookmarklets of around 500 bytes, slightly more for
IE6, slightly less for IE6 SP2.
Yes, apparently Microsoft narrowed the limit way more than stated in
their KB. That must happened in one of security updates. I wonder if
only javascript: was "victimized " so badly or GET request / POST URL
part as well?
Thanks for making me think about length. At first I thought you were
smoking something since the code wasn't nearly 2K long.
You are welcome but you are again mixing two unrelated issues. The
code you posted is not affected by any of IE URL limits, the engine
tries to execute it but it leads to run-time error "Undefined
identifier" because you didn't instantiate q variable. Simply
instantiate it before using and everything will be fine. I'm referring
to the code from your original post:

<quote>
This works:

javascript: for( a=1;a<=10;a++ ) { for( b=1;b<=10;b++ )
{ if( q<1000 )
{ for( c=1;c<=10;c++ ) { for( d=1;d<=10;d++ ) { if( a 0 ) { if( a <
2000 ) { x=10; q++; } } } } } } } for( a=1;a<=10;a++ )
{ for( b=1;b<=10;b++ ) { if( q<1000 ) { for( c=1;c<=10;c++ )
{ for( d=1;d<=10;d++ ) { if( a 0 ) { x=10; q++; } } } } } }
alert( q ); void( 0 );
</quote>

However, a simple search for IE6 bookmarklet length turned up this *stupid*
limitation of IE6.
"Unexpected " I would say. I was explaining the issue a few years in
the row already (as it is a rather frequent one) - and most of the
time I get called stupid "because it cannot be because it just never
can be" :-) The reason of such "mental block" for the true reason is a
bit strange to me. Yes, very bad guys, yes, may get very inconvenient
- but the suckers are right, no one of relevant RFCs demands to accept
unlimited length URL nor some no-lesser-than value. If someone really
doesn't like it - so migrate on some normal browser instead ;-)

Mar 14 '07 #6
VK. Thanks. I'm not really worried about the undefined variable; as I
said, I've tried defining it etc. but left it out of the original code
for the sake of brevity. The real issue is not URL length (which
remains at 2K in IE6 I think), but javascript: bookmarklet length. It
appears to be the culprit.

I have another issue now that I'm solving it by loading an offsite
script, but I'll edit the subject for that one. :)

Thanks again.

On Mar 14, 2:16 pm, "VK" <schools_r...@y ahoo.comwrote:
On Mar 14, 5:56 pm, bweaveruse...@g mail.com wrote:
Thanks. However, turns out it's much worse than that. IE6 apparently
has a limit on bookmarklets of around 500 bytes, slightly more for
IE6, slightly less for IE6 SP2.

Yes, apparently Microsoft narrowed the limit way more than stated in
their KB. That must happened in one of security updates. I wonder if
only javascript: was "victimized " so badly or GET request / POST URL
part as well?
Thanks for making me think about length. At first I thought you were
smoking something since the code wasn't nearly 2K long.

You are welcome but you are again mixing two unrelated issues. The
code you posted is not affected by any of IE URL limits, the engine
tries to execute it but it leads to run-time error "Undefined
identifier" because you didn't instantiate q variable. Simply
instantiate it before using and everything will be fine. I'm referring
to the code from your original post:

<quote>
This works:

javascript: for( a=1;a<=10;a++ ) { for( b=1;b<=10;b++ )
{ if( q<1000 )
{ for( c=1;c<=10;c++ ) { for( d=1;d<=10;d++ ) { if( a 0 ) { if( a <
2000 ) { x=10; q++; } } } } } } } for( a=1;a<=10;a++ )
{ for( b=1;b<=10;b++ ) { if( q<1000 ) { for( c=1;c<=10;c++ )
{ for( d=1;d<=10;d++ ) { if( a 0 ) { x=10; q++; } } } } } }
alert( q ); void( 0 );
</quote>
However, a simple search for IE6 bookmarklet length turned up this *stupid*
limitation of IE6.

"Unexpected " I would say. I was explaining the issue a few years in
the row already (as it is a rather frequent one) - and most of the
time I get called stupid "because it cannot be because it just never
can be" :-) The reason of such "mental block" for the true reason is a
bit strange to me. Yes, very bad guys, yes, may get very inconvenient
- but the suckers are right, no one of relevant RFCs demands to accept
unlimited length URL nor some no-lesser-than value. If someone really
doesn't like it - so migrate on some normal browser instead ;-)

Mar 15 '07 #7
Following up on my IE6 Nesting question, which turned out to be the
508 byte IE6 bookmarklet length limit...

I'm attempting to solve this now by putting my main javascript in
functions in a .js file, then loading it from the bookmarklet.
However, I am running into a problem the first time it's executed. It
appears to be a readyState issue, but I am not sure how to solve it.

Calling the method after loading and injecting the .js script works
fine (readyState is complete at that point).

Here's the bookmarklet:
javascript: var js=document.cre ateElement('scr ipt'); js.src='http://
localhost/isie.js'; js.setAttribute ('type', 'text/javascript');
document.getEle mentsByTagName( 'head')[0].appendChild(js ); hi();
void(0);

And here's test.js:
function hi() {
alert("hi");
}

For those format sticklers here's the bookmarklet formatted:
javascript:
var js=document.cre ateElement('scr ipt');
js.src='http://localhost/isie.js';
js.setAttribute ('type', 'text/javascript');
document.getEle mentsByTagName( 'head')[0].appendChild(js );
hi();
void(0);
Anyway, first time through I get an error "Line: 0 Error: Object
expected".

Second time through, or if I simply enter "javascript : hi();" into the
address bar, I get the "hi" alert.

So I'm guessing that the script isn't fully set up that soon, so the
engine doesn't know what hi() is. Is there a way to make hi() execute
*after* it's all loaded and groovy?

Incidentally, replacing hi() with alert(js.readyS tate) as follows
yields "loading" the first time, then "complete" on any subsequent
execution during that browser session.

javascript: var js=document.cre ateElement('scr ipt'); js.src='http://
localhost/isie.js'; js.setAttribute ('type', 'text/javascript');
document.getEle mentsByTagName( 'head')[0].appendChild(js );
alert(js.readyS tate); void(0);
Thanks for any guidance here.
On Mar 14, 2:16 pm, "VK" <schools_r...@y ahoo.comwrote:
On Mar 14, 5:56 pm, bweaveruse...@g mail.com wrote:
Thanks. However, turns out it's much worse than that. IE6 apparently
has a limit on bookmarklets of around 500 bytes, slightly more for
IE6, slightly less for IE6 SP2.

Yes, apparently Microsoft narrowed the limit way more than stated in
their KB. That must happened in one of security updates. I wonder if
only javascript: was "victimized " so badly or GET request / POST URL
part as well?
Thanks for making me think about length. At first I thought you were
smoking something since the code wasn't nearly 2K long.

You are welcome but you are again mixing two unrelated issues. The
code you posted is not affected by any of IE URL limits, the engine
tries to execute it but it leads to run-time error "Undefined
identifier" because you didn't instantiate q variable. Simply
instantiate it before using and everything will be fine. I'm referring
to the code from your original post:

<quote>
This works:

javascript: for( a=1;a<=10;a++ ) { for( b=1;b<=10;b++ )
{ if( q<1000 )
{ for( c=1;c<=10;c++ ) { for( d=1;d<=10;d++ ) { if( a 0 ) { if( a <
2000 ) { x=10; q++; } } } } } } } for( a=1;a<=10;a++ )
{ for( b=1;b<=10;b++ ) { if( q<1000 ) { for( c=1;c<=10;c++ )
{ for( d=1;d<=10;d++ ) { if( a 0 ) { x=10; q++; } } } } } }
alert( q ); void( 0 );
</quote>
However, a simple search for IE6 bookmarklet length turned up this *stupid*
limitation of IE6.

"Unexpected " I would say. I was explaining the issue a few years in
the row already (as it is a rather frequent one) - and most of the
time I get called stupid "because it cannot be because it just never
can be" :-) The reason of such "mental block" for the true reason is a
bit strange to me. Yes, very bad guys, yes, may get very inconvenient
- but the suckers are right, no one of relevant RFCs demands to accept
unlimited length URL nor some no-lesser-than value. If someone really
doesn't like it - so migrate on some normal browser instead ;-)

Mar 15 '07 #8
VK
On Mar 15, 9:14 pm, bweaveruse...@g mail.com wrote:
Following up on my IE6 Nesting question, which turned out to be the
508 byte IE6 bookmarklet length limit...

I'm attempting to solve this now by putting my main javascript in
functions in a .js file, then loading it from the bookmarklet.
However, I am running into a problem the first time it's executed. It
appears to be a readyState issue, but I am not sure how to solve it.
Yes, it is a frequent synchronization issue: appendChild(js) doesn't
mean "now js file is loaded and parsed, use its functions". It simply
puts a request for DOM Tree update and goes to the next line. If you
always have to call the same function onload, then simply put a call
for it at the very end of your external file:

hi.js file
---------

function hi() {
window.alert('H i!');
}

hi();

---------

<html>
<head>
<title>Test</title>
<style type="text/css">
</style>
</head>
<body>
<a href="javascrip t:void((functio n(){if(window){ var
js=document.cre ateElement('SCR IPT');js.src='h i.js';document. getElementsByTa gName('HEAD')
[0].appendChild(js );}})())">link</a>
</body>
</html>

P.S. In the form above the bookmarklet implements i) an environment
checks, ii) full void wrap against occasional text garbage and iii)
local shy namespace so do not pollute Global beyond the necessity

A pretty-printed version:

<html>
<head>
<title>Test</title>
<style type="text/css">
</style>
</head>
<body>
<a href="javascrip t:void((functio n(){
if(window) {
var js=document.cre ateElement('SCR IPT');
js.src='hi.js';
document.getEle mentsByTagName( 'HEAD')[0].appendChild(js );
}})())">link</a>
</body>
</html>

P.P.S. Please do not quote the whole message and especially the whole
previous thread in your reply: it obscures very much future search
results :-| and also it is such a waste of electrons :-)
Please quote only what you are replying to.

Mar 15 '07 #9
On Mar 15, 3:30 pm, "VK" <schools_r...@y ahoo.comwrote:
On Mar 15, 9:14 pm, bweaveruse...@g mail.com wrote:
I'm attempting to solve this now by putting my main javascript in
functions in a .js file, then loading it from the bookmarklet.
However, I am running into a problem the first time it's executed. It
appears to be a readyState issue, but I am not sure how to solve it.

Yes, it is a frequent synchronization issue: appendChild(js) doesn't
mean "now js file is loaded and parsed, use its functions". It simply
puts a request for DOM Tree update and goes to the next line. If you
always have to call the same function onload, then simply put a call
for it at the very end of your external file:
Actually there are several functions, so this won't really work
(couldn't make it work while testing anyhow).

Using a try/catch with a timer seems to work. Do you see any problems
with this?

javascript:
var js=document.cre ateElement('SCR IPT');
js.src='http://localhost/hi.js';
document.getEle mentsByTagName( 'HEAD')[0].appendChild(js );
setTimeout(fn=f unction() {
try {
hi();
} catch(e) {
alert(e.Descrip tion);
setTimeout( 'fn()', 10 );
}
}
, 10 );
void(0);
P.S. In the form above the bookmarklet implements i) an environment
checks, ii) full void wrap against occasional text garbage and iii)
local shy namespace so do not pollute Global beyond the necessity
I would like to understand some of this better.

* environment checks - can you explain a bit more? is this the
if(window) part? Does it limit the code to IE?
* full void wrap - you mean instead of the final void(0), right?
* The anonymous wrapper function() is nice and I'll test with it some
more.
P.P.S. Please do not quote the whole message and especially the whole
previous thread in your reply: it obscures very much future search
results :-| and also it is such a waste of electrons :-)
Please quote only what you are replying to.
Okay. Sorry.

Mar 16 '07 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

15
6579
by: JustSomeGuy | last post by:
I have a need to make an applicaiton that uses a variable number of nested for loops. for now I'm using a fixed number: for (z=0; z < Z; ++z) for (y=0; y < Y; ++y) for (x=0; x < X; ++x)
3
7141
by: Michael Hertz | last post by:
I have hundreds of samples of XML documents on my harddisc. But all of them lack the one or another feature of XML. Some XML documents have no attributes some others are rather flat (nesting level=2). Furthermore there are XML samples which do not have duplicate elements with only different attribute values or all with the same attributes. I would like to have an advanced XML document with nesting level 5-6, with 1-4 attributes of some of...
0
3116
by: Wolfgang Schwanke | last post by:
Dear usenet, I'm having the following small problem. I've been ask to add some Quicktime panoramas to a website. The author of the panoramas has made two versions of each: One in MOV format, which needs a Quicktime plugin, and one Java applet. He's also kindly supplied me with sample HTML code for each. The code looks like this (simplified):
8
2858
by: Hardrock | last post by:
I encountered some difficulty in implementing dynamic loop nesting. I.e. the number of nesting in a for(...) loop is determined at run time. For example void f(int n) { For(i=0; i<=K; i++) For(i=0; i<=K; i++)
4
2142
by: kl.vanw | last post by:
I would like to count the nesting level in template classes. How can I make the following work? #include <assert.h> template <class T> class A { public: A() { // what goes here?
12
3015
by: TristaSD | last post by:
Hi, Here's a nice footer I get inside every php page I write in wwwroot on my server. The code gets parsed just fine. I installed php5.2-win32 under W2K Server, IIS 5.0. I've installed php on XP machines before, no problems there. Fatal error: Nesting level too deep - recursive dependency? in Unknown on line 0 Cannot find module (IP-MIB): At line 0 in (none) Cannot find module
6
2650
by: stephen.cunliffe | last post by:
Hi, I'm looking for opinion/facts/arguments on the correct nesting of UL, OL, & LI elements. For example, this is what I want (unordered list): * Item 1 * Item 2 * Item 3
17
1915
by: henry | last post by:
Folks Here's a skeleton, generic HTML page, call it "index.php". You'll see a bit of php code in the middle: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head>
0
9673
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9524
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10449
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
1
10168
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
9047
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
7546
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5440
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
2
3730
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
2924
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.