Question by
Cashed · Jun 17, 2016 at 08:51 AM ·
webglerror messagejavascripting
Browser Error: Window function is not a function when called from WebGL JavaScript plugin
Hello,
I am trying to send data from my WebGL player to a JavaScript function declared on the window. However, I keep getting an error:
Uncaught TypeError: window.relayImgurData is not a function
Here is my JavaScript function placed within my body tag:
<script type='text/javascript'>
window.relayImgurData = function(data) {
console.log(typeof data + ' ' + data);
console.log(JSON.parse(data));
addPicture(JSON.parse(data));
}
</script>
Here is my jslib file:
var relay = {
SendImgurData: function(data)
{
window.relayImgurData(Pointer_stringify(data));
}
};
mergeInto(LibraryManager.library, relay);
And here is the C# script where it is being called:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
public class ScreenShot : MonoBehaviour {
// the URL (with endpoint) the pic will be sent to
public string screenShotURL= "https://api.imgur.com/3/image";
[DllImport("__Internal")]
private static extern void SendImgurData(string data);
IEnumerator UploadPic(string screenShotURL) {
// We should only read the screen after all rendering is complete
yield return new WaitForEndOfFrame();
// Create a texture the size of the screen, RGB24 format
int width = Screen.width;
int height = Screen.height;
var tex = new Texture2D( width, height, TextureFormat.RGB24, false );
// Read screen contents into the texture
tex.ReadPixels( new Rect(0, 0, width, height), 0, 0 );
tex.Apply();
// Encode texture into PNG
byte[] bytes = tex.EncodeToPNG();
Destroy( tex );
// Add a custom header to request for API authentication
Dictionary<string, string> headers = new Dictionary<string, string>();
headers["Authorization"] = "Client-ID xxxxxxxxxxxxxxx";
// Upload to URL specified
WWW w = new WWW(screenShotURL, bytes, headers);
yield return w;
if (!string.IsNullOrEmpty(w.error)) {
print(w.text);
}
else {
SendImgurData (w.text);
print("img uploaded =)");
}
}
// Initialization for UploadPic
void UploadPicture(string screenShotURL) {
StartCoroutine(UploadPic(screenShotURL));
}
// Takes a screenshot when 'p' is pressed
void Update() {
if (Input.GetKeyDown ("p")) {
UploadPicture(screenShotURL);
print ("Screenshot =)");
}
}
}
Thank you so much for any help =)
Comment
Your answer
Follow this Question
Related Questions
Woops! Internal server error. Please contact connect@unity3d.com. We will get back to you ASAP. 2 Answers
Im getting this WebGL error its been happening for a while. 0 Answers
Can someone help me please with webgl firefox run? ,How I can run unity webgl on firefox? 0 Answers
Can't embed WebGL in Web application 0 Answers
I cant build WebGL 3 Answers