For future problems, I can recommend the FireBug plugin for Firefox or
the debugger in IE8 (Press F12).
Using either tool, you can set a breakpoint in your JS code, and once
paused, you can inspect the variables avalible.
You can then easily see what parent and opener points to, and this
should help you figure out how to fix issues like this.
Regards, Kenneth Skovhede, GEOGRAF A/S
Chris Claydon skrev:
'parent' takes you to the frame that is the parent of the one you're
running the script in. The GetParent() method as defined below looks
for 'Fusion' to be defined either in the direct parent or the parent
of that frame. If you're launching in a new window, you'll never get
to a parent that has Fusion defined. I think you need to use 'opener'
instead...
*From:* [email protected]
[mailto:[email protected]] *On Behalf Of *Fraser
Burgess
*Sent:* Wednesday, September 16, 2009 2:04 PM
*To:* MapGuide Users Mail List
*Subject:* RE: [mapguide-users] RE: parent.parent.parent.mapFrame -
AJAX vs FUSION
So GetParent() worked when things were called with
"parent.parent.parent.mapFrame"; however, what if I have something in
AJAX like this://
/ /
/function OnPageLoad()/
/{/
/ parent.ZoomToView(<%= GetRequestParameters()["X"] %>, <%=
GetRequestParameters()["Y"] %>, <%= GetRequestParameters()["Scale"]
%>, true);/
/}/
I then modify by adding your code below and then try:
/ /
/function GetParent()/
/ {/
/ if (parent.Fusion) {/
/ return parent;/
/ } else if (parent.parent.Fusion) {/
/ return parent.parent;/
/ }/
/ }/
/ /
/function OnPageLoad()/
/{/
/ GetParent().ZoomToView(<%= GetRequestParameters()["X"] %>, <%=
GetRequestParameters()["Y"] %>, <%= GetRequestParameters()["Scale"]
%>, true);/
/}/
This code is using the sample gotopoint.aspx file. When I select the
link that activates this gotopoint, the URL contains the X Y and scale
http://172.16.186.38/mapguide2010/UtilityMap/gotopoint.aspx?X=632593.974151717&Y=4989398.03115329&Scale=25000
<http://172.16.186.38/mapguide2010/UtilityMap/gotopoint.aspx?X=632593.974151717&Y=4989398.03115329&Scale=25000>
which should be passed into this onPageLoad() function. However it
appears that nothing is firing for OnPageLoad -- so when I click the
link nothing happens, no error message or anything.
Can anyone help with this problem? Also, can anyone point me to
something that would help explain this parent.parent. syntax? I'm not
really certain why at one point we would use parent.function() vs
parent.parent.parent.function() etc.
Thanks again
Fraser
* *
*From:* [email protected]
[mailto:[email protected]] *On Behalf Of *Berdel,
Brian
*Sent:* Wednesday, September 16, 2009 9:02 AM
*To:* MapGuide Users Mail List
*Subject:* [mapguide-users] RE: parent.parent.parent.mapFrame - AJAX
vs FUSION
If you want to add the reference to your fusion index page, add the
following to your aspx (task pane) page
function GetParent()
{
if (parent.Fusion) {
return parent;
} else if (parent.parent.Fusion) {
return parent.parent;
}
}
Then you can call functions in the same way as before but substitute
GetParent()./DigitizePoint(OnPointDigitized);/
Brian Berdel
McMahon Associates, Inc.
p: 215.283.9444 x 260
www.mcmtrans.com <http://www.mcmtrans.com>
*From:* [email protected]
[mailto:[email protected]] *On Behalf Of *Chris
Claydon
*Sent:* Tuesday, September 15, 2009 4:43 PM
*To:* MapGuide Users Mail List
*Subject:* [mapguide-users] RE: parent.parent.parent.mapFrame - AJAX
vs FUSION
I think you should be able to reference the MapGuideViewerAPI.js
script from your aspx page, and then just call DigitizePoint directly
without any window.top or parent references.
It should also be possible to add a reference to MapGuideViewerAPI.js
to the index.html file in the Fusion template you're using, and
reference it using window.top...
It's been a while since I've played around with this stuff, so someone
else may be able to provide specifics...
*From:* [email protected]
[mailto:[email protected]] *On Behalf Of *Fraser
Burgess
*Sent:* Tuesday, September 15, 2009 1:40 PM
*To:* MapGuide Users Mail List
*Subject:* [mapguide-users] parent.parent.parent.mapFrame - AJAX vs FUSION
Hi List,
I'm making steady progress with my project and learning many things
about MapGuide along the way thanks largely to the help from those on
this list -- many thanks to those who have helped so far
From what I can tell parent.parent.parent.mapFrame is how the map
frame is referenced from the task pane in the AJAX viewer. I have
been reading posts about how this is referenced in Fusion and it seems
the /MapGuideViewerAPI.js/ file has a bit of info. Unfortunately I'm
having a bit if trouble putting the pieces together and was hoping
that someone here may steer me in the right direction.
In both AJAX and FUSION I'm working from the taskpane and using the
markup scripts that are part of the AJAX demo's and tutorials.
I assume I need to substitute either 'Fusion' or 'window.top.Fusion'
somehow for
'/parent.parent.parent.mapFrame.DigitizePoint(OnPointDigitized);'. /in
my script however I have yet to do this in such a way that it works.
I keep getting 'Object doesn't support this property or method'.
So for example in my editmarkup.aspx code for example, I have the
following function which should be activated when I click the digitize
point button
/ function AddPoint()/
/ {/
/ SetDigitizeInfo(EDIT_POINT_HELP);/
/
parent.parent.parent.mapFrame.DigitizePoint(OnPointDigitized);/
/ }/
In Fusion this code gives an error 'parent.parent,parent.mapFrame' is
null or not an object
I see that in MapGuideViewerAPI.js
/function DigitizePoint(handler) {/
/ if (handler) {/
/ var Fusion = window.top.Fusion;/
/ var mapWidget = Fusion.getWidgetById(mapWidgetId);/
/ var digitizer = new Fusion.Tool.Canvas.Point(mapWidget);/
/ digitizer.mouseUp = PointHandlers.prototype.mouseUp;/
/ Object.inheritFrom(digitizer, Fusion.Tool.Canvas.prototype, []);/
/ digitizer.initializeCanvas();/
/ var activeWidget = mapWidget.buttonSet.activeButton;/
/ mapWidget.buttonSet.setActiveButton(null);/
/ digitizer.handler = function() {/
/ handler.apply(null, arguments);/
/ activeWidget.setActive(true);/
/ }/
/ digitizer.activateCanvas();/
/ /
/ //add a listener to update the position of the features/
/ var mapWidget = Fusion.getWidgetById(mapWidgetId);/
/ mapWidget.registerForEvent(Fusion.Event.MAP_EXTENTS_CHANGED, /
/ function(){/
/ digitizer.updatePx();/
/ digitizer.clearContext();/
/ digitizer.draw(digitizer.context);/
/ }/
/ );/
/ }/
/}/
Thanks
Fraser
------------------------------------------------------------------------
Important notice to recipients:
Copies of documents that may be relied upon by you are limited to the
printed copies (also known as 'hard copies') that are signed and
sealed by the Engineer and/or Land Surveyor. Files in electronic
formats, or other types of information furnished by the Engineer
and/or Land Surveyor to you such as text, data or graphics are for
your convenience only. Any conclusions or information obtained or
derived from such electronic files will be at the user's sole risk.
When transferring documents in electronic formats, the Engineer and/or
Land Surveyor makes no representation as to long-term compatibility,
usability, or readability of the documents resulting from the use of
software application packages, operating systems or computer hardware
differing from those used by McMahon Associates, Inc. at the beginning
of the project.
------------------------------------------------------------------------
_______________________________________________
mapguide-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapguide-users
_______________________________________________
mapguide-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapguide-users