下面列出了怎么用com.google.gwt.core.client.ScriptInjector的API类实例代码及写法,或者点击链接到github查看源代码。
private void injectTomatoScript() {
logger.info("Inject tomato.js");
ScriptInjector.fromUrl(TOMATO_JS_URL)
.setCallback(new Callback<Void, Exception>() {
@Override
public void onFailure(Exception reason) {
logger.info("Script load failed Info: " + reason);
}
@Override
public void onSuccess(Void result) {
logger.info(
"tomato.js loaded successfully and executed!");
}
}).setRemoveTag(true).setWindow(ScriptInjector.TOP_WINDOW)
.inject();
}
@Test
public void configure() throws Exception {
// Given
App app = new App();
FirebaseConfigParser configParser = PowerMockito.mock(FirebaseConfigParser.class);
PowerMockito.whenNew(FirebaseConfigParser.class).withAnyArguments().thenReturn(configParser);
ScriptInjector.FromUrl fromUrl = PowerMockito.mock(ScriptInjector.FromUrl.class);
Mockito.when(ScriptInjector.fromUrl(Mockito.nullable(String.class))).thenReturn(fromUrl);
Mockito.when(fromUrl.setCallback(Mockito.nullable(Callback.class))).thenReturn(fromUrl);
Mockito.when(fromUrl.setRemoveTag(Mockito.anyBoolean())).thenReturn(fromUrl);
Mockito.when(fromUrl.setWindow(Mockito.nullable(JavaScriptObject.class))).thenReturn(fromUrl);
// When
app.configure();
// Then
PowerMockito.verifyNew(FirebaseConfigParser.class, VerificationModeFactory.times(1)).withArguments(Mockito.anyString());
Mockito.verify(configParser, VerificationModeFactory.times(1)).getFirebaseScriptSrc();
}
private void injectJqueryScript() {
// Workaround: https://goo.gl/1OrFqj
ScriptInjector.fromUrl(JQUERY_UI_URL).setCallback(new Callback<Void, Exception>() {
@Override
public void onFailure(Exception reason) {
logger.info("Script load failed Info: " + reason);
}
@Override
public void onSuccess(Void result) {
logger.info("JQuery for Select loaded successful!");
init();
}
}).setRemoveTag(true).setWindow(ScriptInjector.TOP_WINDOW).inject();
}
private void addPremiumSupportHelpAction() {
// userVoice init
ScriptInjector.fromUrl(resources.userVoice().getSafeUri().asString())
.setWindow(ScriptInjector.TOP_WINDOW)
.setCallback(
new Callback<Void, Exception>() {
@Override
public void onSuccess(Void aVoid) {
// add action
actionManager.registerAction(
localizationConstant.createSupportTicketAction(), createSupportTicketAction);
helpGroup.addSeparator();
helpGroup.add(createSupportTicketAction);
}
@Override
public void onFailure(Exception e) {
Log.error(getClass(), "Unable to inject UserVoice", e);
}
})
.inject();
}
/**
* Will register the {@link ApiFeature} to the list of features providing also the Javascript Script element object
* for later removal / update.
*/
public static void register(ApiFeature apiFeature, Callback<Void, Exception> callback) {
if (apiFeature != null && apiFeature.getApiKey() != null && !apiFeature.getApiKey().isEmpty()) {
JavaScriptObject scriptObject = ScriptInjector.fromUrl(apiFeature.constructApiUrl())
.setWindow(ScriptInjector.TOP_WINDOW)
.setCallback(new Callback<Void, Exception>() {
@Override
public void onFailure(Exception e) {
callback.onFailure(e);
}
@Override
public void onSuccess(Void aVoid) {
callback.onSuccess(aVoid);
}
}).inject();
features.put(apiFeature, scriptObject);
}
}
@Override
public void setup() {
ScriptInjector.fromUrl("https://maps.googleapis.com/maps/api/js?" + (iApiKey != null && !iApiKey.isEmpty() ? "key=" + iApiKey + "&" : "") +
"sensor=false&callback=setupGoogleMap").setWindow(ScriptInjector.TOP_WINDOW).setCallback(
new Callback<Void, Exception>() {
@Override
public void onSuccess(Void result) {
}
@Override
public void onFailure(Exception e) {
UniTimeNotifications.error(e.getMessage(), e);
setVisible(false);
iMapControl = null;
}
}).inject();
}
public void setup() {
loadCss(GWT.getHostPageBaseURL() + "leaflet/leaflet.css");
ScriptInjector.fromUrl(GWT.getHostPageBaseURL() + "leaflet/leaflet.js").setWindow(ScriptInjector.TOP_WINDOW).setCallback(
new Callback<Void, Exception>() {
@Override
public void onSuccess(Void result) {
setupLeafletMap(iTileUrl, iTileAttribution);
setLeafletMarker();
leafletReverseGeocode();
}
@Override
public void onFailure(Exception e) {
UniTimeNotifications.error(e.getMessage(), e);
setVisible(false);
iMapControl = null;
}
}).inject();
}
@Override
public void onModuleLoad() {
StyleInjector.injectAtEnd(FullCalendarClientBundle.INSTANCE.fullCalendarCss().getText());
StyleInjector.injectAtEnd("@media print {" + FullCalendarClientBundle.INSTANCE.fullCalendarPrintCss().getText() + "}");
if (!isMomentPresent()) {
ScriptInjector.fromString(FullCalendarClientBundle.INSTANCE.getMomentJS().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
}
if (!isCalendarPresent()) {
ScriptInjector.fromString(FullCalendarClientBundle.INSTANCE.getFullCalendarJS().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
}
if (!isDragAndResizePresent()) {
ScriptInjector.fromString(FullCalendarClientBundle.INSTANCE.getCustomDragResizeJS().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
}
}
public EventSource(final String url,
final String color,
final String backgroundColor,
final String textColor,
final String borderColor,
final String className,
final boolean isEditable,
final boolean isStartEditable,
final boolean isDurationEditable,
final boolean allDayDefault,
final boolean ignoreTimeZone,
final boolean isGoogle//if true include google script file
) {
if (isGoogle && !GCAL_ADDED) {
GCAL_ADDED = true;
ScriptInjector.fromString(FullCalendarClientBundle.INSTANCE.getGoogleCalJS().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
}
newEvent(url, color, backgroundColor, textColor, borderColor, className, isEditable, isStartEditable, isDurationEditable, allDayDefault, ignoreTimeZone);
}
@Inject
public ResourceLoader(ConsoleResources resources, ProductConfig productConfig) {
resources.css().ensureInjected();
if (productConfig.getProfile().equals(ProductConfig.Profile.COMMUNITY)) {
resources.communityStyles().ensureInjected();
} else {
resources.productStyles().ensureInjected();
}
//resources.verticalTabPanelStyles().ensureInjected();
resources.prettifyCss().ensureInjected();
ProgressPolyfill.inject();
ScriptInjector.fromString(resources.prettifyJs().getText()).setWindow(ScriptInjector.TOP_WINDOW)
.inject();
ScriptInjector.fromString(resources.lunrJs().getText()).setWindow(ScriptInjector.TOP_WINDOW)
.inject();
ScriptInjector.fromString(resources.mousetrapJs().getText()).setWindow(
ScriptInjector.TOP_WINDOW).inject();
ScriptInjector.fromString(resources.protovis().getText()).setWindow(ScriptInjector.TOP_WINDOW)
.inject();
}
public void init() {
if (rawHtml == null) {
Gdx.app.error(GdxFIRLogger.getLogTag(), "You forgot about FirebaseConfiguration#init()");
return;
}
ScriptInjector.fromUrl(configParser.getFirebaseScriptSrc())
.setRemoveTag(false)
.setWindow(ScriptInjector.TOP_WINDOW)
.setCallback(new ScriptLoadedCallback(configParser))
.inject();
}
@Test
public void init() {
// Given
Mockito.when(configFileMock.exists()).thenReturn(true);
FirebaseConfiguration firebaseConfiguration = Mockito.spy(new FirebaseConfiguration());
// When
firebaseConfiguration.load().init();
// Then
PowerMockito.verifyStatic(ScriptInjector.class, VerificationModeFactory.times(1));
ScriptInjector.fromUrl(Mockito.anyString());
}
private void injectMyFunctionScript() {
ScriptInjector.fromUrl(MYFUNCTION_URL).setCallback(new Callback<Void, Exception>() {
@Override
public void onFailure(Exception reason) {
logger.info("Script load failed Info: " + reason);
}
@Override
public void onSuccess(Void result) {
logger.info("MyFunction loaded successful!");
}
}).setRemoveTag(true).setWindow(ScriptInjector.TOP_WINDOW).inject();
}
protected static void directInjectJs(TextResource resource, boolean removeTag, boolean sourceUrl) {
String text = resource.getText() + (sourceUrl ?
"//# sourceURL=" + resource.getName() + ".js" : "");
// Inject the script resource
ScriptInjector.fromString(text)
.setWindow(ScriptInjector.TOP_WINDOW)
.setRemoveTag(removeTag)
.inject();
}
protected void setupLanguage(DatePickerLanguage language) {
if (language.getJs() != null) {
ScriptInjector.fromString(language.getJs().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
getPicker().stop();
Scheduler.get().scheduleDeferred(this::load);
}
}
@Override
public void eval(String js) {
Scheduler.get().scheduleFixedDelay(() -> {
Element el = Document.get().getElementById(uniqueId);
if (el != null) {
ScriptInjector.fromString(js).setWindow(ScriptInjector.TOP_WINDOW).setRemoveTag(true).inject();
return false;
}
return true;
}, 100);
}
private void ensureInjected(final Language language) {
if (!languageScripts.isEmpty()) {
for (final JavaScriptObject script : languageScripts.values()) {
try {
final Element ele = (Element) script;
ele.removeFromParent();
} catch (final Exception e) {
// TODO: handle exception
}
}
}
final JavaScriptObject scriptElement = ScriptInjector.fromString(language.getResource().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
languageScripts.put(language.getCode(), scriptElement);
}
@Override
protected void onLoad() {
super.onLoad();
// Inject the language JS is necessary
if (language.getJs() != null) {
ScriptInjector.fromString(language.getJs().getText())
.setWindow(ScriptInjector.TOP_WINDOW).inject();
}
initialize(getElement(), options);
bindSelectEvents(getElement());
}
/** {@inheritDoc} */
@Override
public void setLanguage(final DatePickerLanguage language) {
this.language = language;
// Inject the JS for the language
if (language.getJs() != null) {
ScriptInjector.fromString(language.getJs().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
}
}
/** {@inheritDoc} */
@Override
public void setLanguage(final DateTimePickerLanguage language) {
this.language = language;
// Inject the JS for the language
if (language.getJs() != null) {
ScriptInjector.fromString(language.getJs().getText())
.setWindow(ScriptInjector.TOP_WINDOW).inject();
}
}
private void initialize() {
// Inject the language JS is necessary
if (language.getJs() != null) {
ScriptInjector.fromString(language.getJs().getText())
.setWindow(ScriptInjector.TOP_WINDOW).inject();
}
// Initialize
initialize(getElement(), options);
// Enable/Disable editor
setEnabled(enabled);
}
@Override
public void onModuleLoad() {
if (Window.Navigator.getUserAgent().contains(MSIE) && Window.Navigator.getUserAgent().contains(EIGHT)) {
ScriptInjector.fromString(RespondClientBundle.INSTANCE.respond().getText()).setWindow(ScriptInjector.TOP_WINDOW)
.inject();
ScriptInjector.fromString(RespondClientBundle.INSTANCE.html5Shiv().getText()).setWindow(ScriptInjector.TOP_WINDOW)
.inject();
}
}
@Override
public void onModuleLoad() {
ScriptInjector.fromString(Resources.INSTANCE.aceJs().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
ScriptInjector.fromString(Resources.INSTANCE.extSearchBoxJs().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
ScriptInjector.fromString(Resources.INSTANCE.modeXmlJs().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
ScriptInjector.fromString(Resources.INSTANCE.modeJsonJs().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
ScriptInjector.fromString(Resources.INSTANCE.modeLogfileJs().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
ScriptInjector.fromString(Resources.INSTANCE.themeChromeJs().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
ScriptInjector.fromString(Resources.INSTANCE.themeLogFileJs().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
}
public static void inject() {
ScriptInjector.fromString(HighlightBundle.INSTANCE.highlight().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
StyleInjector.injectStylesheetAtStart(HighlightBundle.INSTANCE.style().getText());
GWT.log("Injected highlighter.");
}
private static void inject() {
ScriptInjector.fromString("(function(){function n(f,d){var c=f[0],a=f[1],b=f[2],e=f[3],c=g(c,a,b,e,d[0],7," +
"-680876936),e=g(e,c,a,b,d[1],12,-389564586),b=g(b,e,c,a,d[2],17,606105819),a=g(a,b,e,c,d[3],22," +
"-1044525330),c=g(c,a,b,e,d[4],7,-176418897),e=g(e,c,a,b,d[5],12,1200080426),b=g(b,e,c,a,d[6],17," +
"-1473231341),a=g(a,b,e,c,d[7],22,-45705983),c=g(c,a,b,e,d[8],7,1770035416),e=g(e,c,a,b,d[9],12," +
"-1958414417),b=g(b,e,c,a,d[10],17,-42063),a=g(a,b,e,c,d[11],22,-1990404162),c=g(c,a,b,e,d[12],7," +
"1804603682),e=g(e,c,a,b,d[13],12,-40341101),\n" +
"b=g(b,e,c,a,d[14],17,-1502002290),a=g(a,b,e,c,d[15],22,1236535329),c=k(c,a,b,e,d[1],5,-165796510)," +
"e=k(e,c,a,b,d[6],9,-1069501632),b=k(b,e,c,a,d[11],14,643717713),a=k(a,b,e,c,d[0],20,-373897302),c=k" +
"(c,a,b,e,d[5],5,-701558691),e=k(e,c,a,b,d[10],9,38016083),b=k(b,e,c,a,d[15],14,-660478335),a=k(a,b," +
"e,c,d[4],20,-405537848),c=k(c,a,b,e,d[9],5,568446438),e=k(e,c,a,b,d[14],9,-1019803690),b=k(b,e,c,a," +
"d[3],14,-187363961),a=k(a,b,e,c,d[8],20,1163531501),c=k(c,a,b,e,d[13],5,-1444681467),e=k(e,c,a,b," +
"d[2],9,-51403784),\n" +
"b=k(b,e,c,a,d[7],14,1735328473),a=k(a,b,e,c,d[12],20,-1926607734),c=h(a^b^e,c,a,d[5],4,-378558),e=h" +
"(c^a^b,e,c,d[8],11,-2022574463),b=h(e^c^a,b,e,d[11],16,1839030562),a=h(b^e^c,a,b,d[14],23,-35309556)" +
",c=h(a^b^e,c,a,d[1],4,-1530992060),e=h(c^a^b,e,c,d[4],11,1272893353),b=h(e^c^a,b,e,d[7],16," +
"-155497632),a=h(b^e^c,a,b,d[10],23,-1094730640),c=h(a^b^e,c,a,d[13],4,681279174),e=h(c^a^b,e,c,d[0]," +
"11,-358537222),b=h(e^c^a,b,e,d[3],16,-722521979),a=h(b^e^c,a,b,d[6],23,76029189),c=h(a^b^e,c,a,d[9]," +
"4,-640364487),\n" +
"e=h(c^a^b,e,c,d[12],11,-421815835),b=h(e^c^a,b,e,d[15],16,530742520),a=h(b^e^c,a,b,d[2],23," +
"-995338651),c=l(c,a,b,e,d[0],6,-198630844),e=l(e,c,a,b,d[7],10,1126891415),b=l(b,e,c,a,d[14],15," +
"-1416354905),a=l(a,b,e,c,d[5],21,-57434055),c=l(c,a,b,e,d[12],6,1700485571),e=l(e,c,a,b,d[3],10," +
"-1894986606),b=l(b,e,c,a,d[10],15,-1051523),a=l(a,b,e,c,d[1],21,-2054922799),c=l(c,a,b,e,d[8],6," +
"1873313359),e=l(e,c,a,b,d[15],10,-30611744),b=l(b,e,c,a,d[6],15,-1560198380),a=l(a,b,e,c,d[13],21," +
"1309151649),c=l(c,a,b,e,\n" +
"d[4],6,-145523070),e=l(e,c,a,b,d[11],10,-1120210379),b=l(b,e,c,a,d[2],15,718787259),a=l(a,b,e,c," +
"d[9],21,-343485551);f[0]=m(c,f[0]);f[1]=m(a,f[1]);f[2]=m(b,f[2]);f[3]=m(e,f[3])}function h(f,d,c,a," +
"b,e){d=m(m(d,f),m(a,e));return m(d<<b|d>>>32-b,c)}function g(f,d,c,a,b,e,g){return h(d&c|~d&a,f,d,b," +
"e,g)}function k(f,d,c,a,b,e,g){return h(d&a|c&~a,f,d,b,e,g)}function l(f,d,c,a,b,e,g){return h(c^" +
"(d|~a),f,d,b,e,g)}function p(f){var d=f;txt=\"\";var c=d.length;f=[1732584193,-271733879," +
"-1732584194,271733878];\n" +
"var a;for(a=64;a<=d.length;a+=64){for(var b=d.substring(a-64,a),e=[],g=void 0,g=0;64>g;g+=4)" +
"e[g>>2]=b.charCodeAt(g)+(b.charCodeAt(g+1)<<8)+(b.charCodeAt(g+2)<<16)+(b.charCodeAt(g+3)<<24);n(f," +
"e)}d=d.substring(a-64);b=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(a=0;a<d.length;a++)b[a>>2]|=d" +
".charCodeAt(a)<<(a%4<<3);b[a>>2]|=128<<(a%4<<3);if(55<a)for(n(f,b),a=0;16>a;a++)b[a]=0;b[14]=8*c;n" +
"(f,b);for(d=0;d<f.length;d++){c=f[d];a=\"\";for(b=0;4>b;b++)a+=q[c>>8*b+4&15]+q[c>>8*b&15];" +
"f[d]=a}return f.join(\"\")}function m(f,\n" +
"d){return f+d&4294967295}var q=\"0123456789abcdef\".split(\"\");" +
"\"5d41402abc4b2a76b9719d911017c592\"!=p(\"hello\")&&(m=function(f,d){var c=(f&65535)+(d&65535);" +
"return(f>>16)+(d>>16)+(c>>16)<<16|c&65535});window.md5hash=p})()")
.setWindow(ScriptInjector.TOP_WINDOW)
.inject();
}
@Override
public void onModuleLoad() {
ScriptInjector.fromString(BootboxClientBundle.INSTANCE.bootbox().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
}
private void inject(String resource) {
ScriptInjector.fromUrl(GWT.getModuleBaseURL() + resource)
.setRemoveTag(true).setWindow(ScriptInjector.TOP_WINDOW).inject();
}
@Override
public void onModuleLoad() {
if (!isSliderLoaded()) {
ScriptInjector.fromString(SliderClientBundle.INSTANCE.slider().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
}
}
@Override
public void onModuleLoad() {
ScriptInjector.fromString(SelectClientBundle.INSTANCE.select().getText())
.setWindow(ScriptInjector.TOP_WINDOW).inject();
}
@Override
public void onModuleLoad() {
ScriptInjector.fromString(TagsInputClientBundle.INSTANCE.tagsinput().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
}