mozilla

Compare Revisions

Getting the page URL in NPAPI plugin

Change Revisions

Revision 70916:

Revision 70916 by Sheppy on

Revision 70917:

Revision 70917 by El1T0v on

Title:
Getting the page URL in NPAPI plugin
Getting the page URL in NPAPI plugin
Slug:
Getting_the_page_URL_in_NPAPI_plugin
Getting_the_page_URL_in_NPAPI_plugin
Tags:
Add-ons, Plugins
Add-ons, Plugins
Content:

Revision 70916
Revision 70917
n27NPN_GetValue( m_pNPInstance, NPNVWindowNPObject, &sWindowObj n27NPN_GetValue( m_pNPInstance, NPNVWindowNPObject,
>); 
28// Create a "location" identifier.
29NPIdentifier identifier = NPN_GetStringIdentifier( "location" );
30// Declare a local variant value.
31NPVariant variantValue;
32// Get the location property from the window object (which is ano
>ther object). 
33bool b1 = NPN_GetProperty( m_pNPInstance, sWindowObj, identifier,
> &variantValue ); 
34// Get a pointer to the "location" object.
35NPObject *locationObj = variantValue.value.objectValue;
36// Create a "href" identifier.
37identifier = NPN_GetStringIdentifier( "href" );
38// Get the location property from the location object.
39bool b2 = NPN_GetProperty( m_pNPInstance, locationObj, identifier
>, &variantValue ); 
t41    <p>t
42      This code is just a rough example. Remember to release any 
>references after using them. 
43    </p>
44    <p>
45      Tradeoffs:
46    </p>
47    <ul>
48      <li>Uses NPAPI only
49      </li>
50      <li>Works in most browsers
51      </li>
52      <li>Does not work in Mozillas older than Firefox 1.0
53      </li>
54    </ul>
55    <h2 name="Via_NPP_NewStream">
56      Via NPP_NewStream
57    </h2>
58    <p>
59      From <a class="external" href="http://groups.google.com/gro
>up/mozilla.dev.tech.plugins/msg/28bd6b3df9b0e7cf">Braden McDaniel 
></a>: 
60    </p>
61    <p>
62      If you want the URI of the resource for which the plug-in i
>s invoked, the most NPAPI-friendly way to do that is to get it fr 
>om the {{template.Npapi("NPStream")}} that is passed to {{templat 
>e.Npapi("NPP_NewStream")}}. 
63    </p>
64    <p>
65      Tradeoffs:
66    </p>
67    <ul>
68      <li>NPAPI only
69      </li>
70      <li>Probably works in all browsers, all versions
71      </li>
72      <li>Is sort of backwards (?)
73      </li>
74      <li>Advantages / disadvantages&nbsp;?
75      </li>
76    </ul>
77    <h2 name="Via_DOM">
78      Via DOM
79    </h2>
80    <p>
81      From <a class="external" href="http://groups.google.com/gro
>up/mozilla.dev.tech.plugins/msg/32db2fbf48a8d1bb">Benjamin Smedbe 
>rg</a>: 
82    </p>
83    <p>
84      The NPAPI gives you the ability to get access to the <a hre
>f="en/NsIDOMWindow">nsIDOMWindow</a> object which contains the cu 
>rrent plugin via the <a class="external" href="http://lxr.mozilla 
>.org/mozilla/source/modules/plugin/base/public/npapi.h#420">NPNVD 
>OMElement enum</a> passed to {{template.Npapi("NPN_GetValue")}}.  
>This returns an addrefed <a class="external" href="http://lxr.moz 
>illa.org/mozilla/source/dom/public/idl/core/nsIDOMElement.idl">ns 
>IDOMElement</a> interface pointer from which you can call <code>. 
>ownerDocument</code> (on <a class="external" href="http://lxr.moz 
>illa.org/mozilla/source/dom/public/idl/core/nsIDOMNode.idl#82">ns 
>IDOMNode</a>), QueryInterface that object to <a class="external"  
>href="http://lxr.mozilla.org/mozilla/source/dom/public/idl/core/n 
>sIDOM3Document.idl#63">nsIDOM3Document</a>, and call <code>.docum 
>entURI</code>. 
85    </p>
86    <p>
87      Tradeoffs:
88    </p>
89    <ul>
90      <li>is inherently incompatible with other non-Mozilla brows
>ers (i.e. does not work in Opera, Safari etc.) 
91      </li>
92      <li>compatible with older versions of the Mozilla (probably
> back to Mozilla 1.0) 
93      </li>
94      <li>requires C++
95      </li>
96    </ul>

Back to History